Supporting Information: ‘Sex differences in allometry for phenotypic traits in mice indicate that females are not scaled males’

Laura A. B. Wilson, Susanne R. K. Zajitschek, Malgorzata Lagisz, Jeremy Mason, Hamed Haselimashhadi & Shinichi Nakagawa

This document mainly provides the description of the main dataset, and the R scripts and their outputs for the paper “Sex differences in allometry for phenotypic traits indicate that females are not scaled males”.

Setting-up

Loading packages

# older version of the orchaRd package
#devtools::install_github("itchyshin/orchard_plot", subdir = "orchaRd", force = TRUE, build_vignettes = TRUE)
#install.packages("cmdstanr", repos = c("https://mc-stan.org/r-packages/", getOption("repos")))

pacman::p_load(tidyverse,
               purrr,
               metafor, 
               poolr,
               patchwork,
               orchaRd, # older version: 
               broom.mixed,
               here,
               nlme,
               pander,
               brms,
               kableExtra,
               formatR,
               knitr,
               brms,
               rstan,
               cmdstanr
               )

check_cmdstan_toolchain(fix = TRUE, quiet = TRUE)

Loading custom functions

We load custom function not included in the packages above.

  • functions for calculating ‘parameters’ (intercepts, slopes and residuals SDs for both males and females and model fit) : get_parmetersN
  • functions for drawing orchard plots (modified from the original): orchard_plot2 and assoicated functions.
# function to get what we need from these 2 models (you can include models in this function as well)
get_parmetersN<- function(i){
  
  # grand-mean centering of weights
  ln_c_weight <- scale(log(i[["weight"]]), center = TRUE, scale = TRUE)
  i[,"ln_c_weight"] <- ln_c_weight
  
  if(i[["nmeta"]][1] == 1 && i[["nstrain"]][1] == 1){
  
    # female model 
    model_f <- lme(log(data_point2) ~ sex*ln_c_weight, 
                   random = list(#metadata_group = ~ ln_c_weight, 
                                #strain_name = ~ ln_c_weight,
                                 date_of_experiment = ~ 1),
                   weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
    
    # male model
    model_m <- lme(log(data_point2) ~ relevel(sex, ref = "male")*ln_c_weight, 
                   random = list(#metadata_group = ~ ln_c_weight, 
                                 #strain_name = ~ ln_c_weight,
                                 date_of_experiment = ~ 1),
                   weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
    # neutral model
    model_n <- lme(log(data_point2) ~ sex*ln_c_weight, 
                   random = list(#metadata_group = ~ ln_c_weight, 
                                 #strain_name = ~ ln_c_weight,
                                 date_of_experiment = ~ 1),
                   #weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
      
  } else if (i[["nmeta"]][1] == 1) {
    
    # female model 
    model_f <- lme(log(data_point2) ~ sex*ln_c_weight, 
                   random = list(#metadata_group = ~ ln_c_weight, 
                     strain_name = ~ ln_c_weight,
                     date_of_experiment = ~ 1),
                   weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
    
    # male model
    model_m <- lme(log(data_point2) ~ relevel(sex, ref = "male")*ln_c_weight, 
                   random = list(#metadata_group = ~ ln_c_weight, 
                     strain_name = ~ ln_c_weight,
                     date_of_experiment = ~ 1),
                   weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
    # neutral model
    model_n <- lme(log(data_point2) ~ sex*ln_c_weight, 
                   random = list(#metadata_group = ~ ln_c_weight, 
                     strain_name = ~ ln_c_weight,
                     date_of_experiment = ~ 1),
                   #weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
    
  } else if (i[["nstrain"]][1] == 1){
    
    # female model 
    model_f <- lme(log(data_point2) ~ sex*ln_c_weight, 
                   random = list(metadata_group = ~ ln_c_weight, 
                     #strain_name = ~ ln_c_weight,
                     date_of_experiment = ~ 1),
                   weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
    
    # male model
    model_m <- lme(log(data_point2) ~ relevel(sex, ref = "male")*ln_c_weight, 
                   random = list(metadata_group = ~ ln_c_weight, 
                     #strain_name = ~ ln_c_weight,
                     date_of_experiment = ~ 1),
                   weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
    # neutral model
    model_n <- lme(log(data_point2) ~ sex*ln_c_weight, 
                   random = list(metadata_group = ~ ln_c_weight, 
                     #strain_name = ~ ln_c_weight,
                     date_of_experiment = ~ 1),
                   #weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
  } else {
    # female model 
    model_f <- lme(log(data_point2) ~ sex*ln_c_weight, 
                   random = list(metadata_group = ~ ln_c_weight, 
                                 strain_name = ~ ln_c_weight,
                                 date_of_experiment = ~ 1),
                   weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
    
    # male model
    model_m <- lme(log(data_point2) ~ relevel(sex, ref = "male")*ln_c_weight, 
                   random = list(metadata_group = ~ ln_c_weight, 
                                 strain_name = ~ ln_c_weight,
                                 date_of_experiment = ~ 1),
                   weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
    # neutral model
    model_n <- lme(log(data_point2) ~ sex*ln_c_weight, 
                   random = list(metadata_group = ~ ln_c_weight, 
                                 strain_name = ~ ln_c_weight,
                                 date_of_experiment = ~ 1),
                   #weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
  }
  # getting all we want
  females <- broom.mixed::tidy(model_f)
  males <- broom.mixed::tidy(model_m)
  # gets variance weights
  weights <- attr(model_f$modelStruct$varStruct, "weights")
  male_correction <- 1/weights[which(names(weights) == "male")[1]]
  female_correction <- 1/weights[which(names(weights) == "female")[1]]
  
  # get parameters
  parameter_name <- tolower(i[["parameter_name"]][1])
  procedure_name <- i[["procedure_name"]][1]# "procedure_name"
  m_n <- sum(i[["sex"]] == "male") # sample size for males 
  f_n <- sum(i[["sex"]] == "female") # N fo females
  f_intercept <- as.numeric(females[1, 4])
  f_intercept_se <- as.numeric(females[1, 5])
  f_slope <- as.numeric(females[3, 4])
  f_slope_se <- as.numeric(females[3, 5])
  m_intercept <- as.numeric(males[1, 4])
  m_intercept_se <- as.numeric(males[1, 5])
  m_slope  <- as.numeric(males[3, 4])
  m_slope_se  <- as.numeric(males[3, 5])
  fm_diff_int  <- as.numeric(males[2, 4])
  fm_diff_int_se  <- as.numeric(males[2, 5])
  fm_diff_int_p  <- as.numeric(males[2, 8])
  fm_diff_slope <- as.numeric(males[4, 4])
  fm_diff_slope_se <- as.numeric(males[4, 5])
  fm_diff_slope_p <- as.numeric(males[4, 8])
  
  # variance component
  #group_sd <- as.numeric(VarCorr(model_f)[,2][2])
  #g_slope_sd <- as.numeric(VarCorr(model_f)[,2][3])
  #batch_sd <- as.numeric(VarCorr(model_f)[,2][5])
  f_sd <- as.numeric(tail(VarCorr(model_f)[,2],1))*female_correction
  m_sd <- as.numeric(tail(VarCorr(model_f)[,2],1))*male_correction
  
  # model fit
  r_m <- sqrt(MuMIn::r.squaredGLMM(model_n)[1,1])
  r_c <- sqrt(MuMIn::r.squaredGLMM(model_n)[1,2])
  # putting it together
  paras <- data.frame(parameter_name, procedure_name, 
             f_n, m_n, f_intercept, f_intercept_se, f_slope, f_slope_se, 
             m_intercept, m_intercept_se, m_slope, m_slope_se, 
             fm_diff_int, fm_diff_int_se, fm_diff_int_p,
             fm_diff_slope, fm_diff_slope_se, fm_diff_slope_p,
             f_sd, m_sd, r_m, r_c)
  names(paras) <- c('parameter_name', 'procedure_name', 
                    'f_n', 'm_n','f_intercept', 'f_intercept_se', 'f_slope', 'f_slope_se',
                    'm_intercept', 'm_intercept_se', 'm_slope', 'm_slope_se',
                    'fm_diff_int', 'fm_diff_int_se', 'fm_diff_int_p',
                    'fm_diff_slope', 'fm_diff_slope_se', 'fm_diff_slope_p',
                    'f_sd', 'm_sd', 'r_m', 'r_c') # variance component
  invisible(paras)
  
}

# function to compare two models
get_strain_p<- function(i){
  
  # centering weights separately for each 
  ln_c_weight <- scale(log(i[["weight"]]), center = TRUE, scale = TRUE)
  i[,"ln_c_weight"] <- ln_c_weight
  
  if (i[["nmeta"]][1] == 1) {
    
    # model with strain as random factor 
    model_1 <- lme(log(data_point2) ~ sex*ln_c_weight, 
                   random = list(#metadata_group = ~ ln_c_weight, 
                     strain_name = ~ ln_c_weight,
                     date_of_experiment = ~ 1),
                   #weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
    
    # model without strain as random factor 
    model_2 <- lme(log(data_point2) ~ sex*ln_c_weight, 
                   random = list(#metadata_group = ~ ln_c_weight, 
                     #strain_name = ~ ln_c_weight,
                     date_of_experiment = ~ 1),
                   #weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
    
    
    
  }  else {

    # model with strain as random factor 
    model_1 <- lme(log(data_point2) ~ sex*ln_c_weight, 
                   random = list(metadata_group = ~ ln_c_weight, 
                                 strain_name = ~ ln_c_weight,
                                 date_of_experiment = ~ 1),
                   #weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
    # model without strain as random factor 
    model_2 <- lme(log(data_point2) ~ sex*ln_c_weight, 
                   random = list(metadata_group = ~ ln_c_weight, 
                                 #strain_name = ~ ln_c_weight,
                                 date_of_experiment = ~ 1),
                   #weights = varIdent(form = ~1 | sex),
                   control = lmeControl(opt = "optim"),
                   data = i)
    
  }
  
  # anova 
  p_value <- anova(model_1, model_2)$p[[2]]
  delta_aic <- anova(model_1, model_2)$AIC[1] - anova(model_1, model_2)$AIC[2] 
  
  # get parameters
  parameter_name <- tolower(i[["parameter_name"]][1])
  procedure_name <- i[["procedure_name"]][1]# "procedure_name"
  
  paras <- data.frame(parameter_name, procedure_name, delta_aic, p_value)
  names(paras) <- c('parameter_name', 'procedure_name', 'delta_aic', 'p_value') # variance component
  invisible(paras)
  
}


# getting ride of traits which do not run
get_para_poss <- possibly(.f = get_parmetersN, 
                          otherwise = NULL)


# getting ride of traits with do not run

get_para_poss2 <- possibly(.f = get_strain_p, 
                          otherwise = NULL)

# functions

orchard_plot2 <- function (object, mod = "Int", xlab, N = "none", alpha = 0.5, 
          angle = 90, cb = FALSE, k = TRUE, transfm = c("none", "tanh"), 
          point.size = 2.5, branch.size = 5,
          condition.lab = "Condition", legend.on = TRUE) 
{
  transfm <- match.arg(transfm)
  if (any(class(object) %in% c("rma.mv", "rma"))) {
    if (mod != "Int") {
      object <- mod_results(object, mod)
    }
    else {
      object <- mod_results(object, mod = "Int")
    }
  }
  mod_table <- object$mod_table
  data <- object$data
  data$moderator <- factor(data$moderator, levels = mod_table$name, 
                           labels = mod_table$name)
  data$scale <- (1/sqrt(data[, "vi"]))
  legend <- "Precision (1/SE)"
 
  # sample size 
  if(any(N != "none")){
    data$scale <- N
    legend <- "Sample size (N)" # we want to use italic
  }
  
  if (transfm == "tanh") {
    cols <- sapply(mod_table, is.numeric)
    mod_table[, cols] <- Zr_to_r(mod_table[, cols])
    data$yi <- Zr_to_r(data$yi)
    label <- xlab
  }
  else {
    label <- xlab
  }
  mod_table$K <- as.vector(by(data, data[, "moderator"], function(x) length(x[, 
                                                                              "yi"])))
  group_no <- length(unique(mod_table[, "name"]))
  cbpl <- c("#E69F00", "#009E73", "#F0E442", "#0072B2", "#D55E00", 
            "#CC79A7", "#56B4E9", "#999999")
  if (names(mod_table)[2] == "condition") {
    condition_no <- length(unique(mod_table[, "condition"]))
    plot <- ggplot2::ggplot() + ggbeeswarm::geom_quasirandom(data = data, 
                                                             ggplot2::aes(y = yi, x = moderator, size = scale, 
                                                                          colour = moderator), alpha = alpha) + ggplot2::geom_hline(yintercept = 0, 
                                                                                                                                    linetype = 2, colour = "black", alpha = alpha) + 
      ggplot2::geom_linerange(data = mod_table, ggplot2::aes(x = name, 
                                                             ymin = lowerCL, ymax = upperCL), size = branch.size, 
                              position = ggplot2::position_dodge2(width = 0.3)) + 
      ggplot2::geom_pointrange(data = mod_table, ggplot2::aes(y = estimate, 
                                                              x = name, ymin = lowerPR, ymax = upperPR, shape = as.factor(condition), 
                                                              fill = name), size = 0.5, position = ggplot2::position_dodge2(width = 0.3)) + 
      ggplot2::scale_shape_manual(values = 20 + (1:condition_no)) + 
      ggplot2::coord_flip() + ggplot2::theme_bw() + ggplot2::guides(fill = "none", 
                                                                    colour = "none") + ggplot2::theme(legend.position = c(0, 
                                                                                                                          1), legend.justification = c(0, 1)) + ggplot2::theme(legend.title = ggplot2::element_text(size = 9)) + 
      ggplot2::theme(legend.direction = "horizontal") + 
      ggplot2::theme(legend.background = ggplot2::element_blank()) + 
      ggplot2::labs(y = label, x = "", size = legend) + 
      ggplot2::scale_size_continuous(breaks = c(200, 2000, 20000), guide = guide_legend()) + 
      ggplot2::labs(shape = condition.lab) + ggplot2::theme(axis.text.y = ggplot2::element_text(size = 10, 
                                                                                                colour = "black", hjust = 0.5, angle = angle))
    plot <- plot + ggplot2::annotate("text", y = (max(data$yi) + 
                                                    (max(data$yi) * 0.1)), x = (seq(1, group_no, 1) + 
                                                                                  0.3), label = paste("italic(k)==", mod_table$K[1:group_no]), 
                                     parse = TRUE, hjust = "right", size = 3.5)
  }
  else {
    plot <- ggplot2::ggplot(data = mod_table, ggplot2::aes(x = estimate, 
                                                           y = name)) + ggbeeswarm::geom_quasirandom(data = data, 
                                                                                                     ggplot2::aes(x = yi, y = moderator, size = scale, 
                                                                                                                  colour = moderator), groupOnX = FALSE, alpha = alpha) + 
      ggplot2::geom_errorbarh(ggplot2::aes(xmin = lowerPR, 
                                           xmax = upperPR), height = 0, show.legend = FALSE, 
                              size = 0.5, alpha = 0.6) + ggplot2::geom_errorbarh(ggplot2::aes(xmin = lowerCL, 
                                                                                              xmax = upperCL), height = 0, show.legend = FALSE, 
                                                                                 size = branch.size) + ggplot2::geom_vline(xintercept = 0, 
                                                                                                                   linetype = 2, colour = "black", alpha = alpha) + 
      ggplot2::geom_point(ggplot2::aes(fill = name), size = point.size, 
                          shape = 21) + ggplot2::theme_bw() + ggplot2::guides(fill = "none", 
                                                                              colour = "none") + ggplot2::theme(legend.position = c(1, 
                                                                                                                                    0), legend.justification = c(1, 0)) + ggplot2::theme(legend.title = ggplot2::element_text(size = 9)) + 
      ggplot2::theme(legend.direction = "horizontal") + 
      ggplot2::theme(legend.background = ggplot2::element_blank()) + 
      ggplot2::labs(x = label, y = "", size = legend) + 
      ggplot2::scale_size_continuous(breaks = c(200, 2000, 20000), guide = guide_legend()) + 
      ggplot2::theme(axis.text.y = ggplot2::element_text(size = 10, 
                                                         colour = "black", hjust = 0.5, angle = angle))
    if (k == TRUE) {
      plot <- plot + ggplot2::annotate("text", x = (max(data$yi) + 
                                                      (max(data$yi) * 0.1)), y = (seq(1, group_no, 
                                                                                      1) + 0.3), label = paste("italic(k)==", mod_table$K), 
                                       parse = TRUE, hjust = "right", size = 3.5)
    }
  }
  if (cb == TRUE) {
    plot <- plot + ggplot2::scale_fill_manual(values = cbpl) + 
      ggplot2::scale_colour_manual(values = cbpl)
  }
  
  if (legend.on == FALSE){
    plot <- plot + ggplot2::theme(legend.position = "none")
  }
  
  
  return(plot)
}

# mod_result old

#' @title get_est
#' @description Function gets estimates from rma objects (metafor)
#' @param model rma.mv object
#' @param mod the name of a moderator. If meta-analysis (i.e. no moderator, se mod = "Int")
#' @author Shinichi Nakagawa - s.nakagawa@unsw.edu.au
#' @author Daniel Noble - daniel.noble@anu.edu.au
#' @export

get_est <- function (model, mod) {
  name <- firstup(as.character(stringr::str_replace(row.names(model$beta), {{mod}}, "")))
  
  estimate <- as.numeric(model$beta)
  lowerCL <- model$ci.lb
  upperCL <- model$ci.ub
  
  table <- tibble::tibble(name = factor(name, levels = name, labels = name), estimate = estimate, lowerCL = lowerCL, upperCL = upperCL)
  
  return(table)
}


#' @title get_pred
#' @description Function to get prediction intervals (crediblity intervals) from rma objects (metafor)
#' @param model rma.mv object
#' @param mod the name of a moderator
#' @author Shinichi Nakagawa - s.nakagawa@unsw.edu.au
#' @author Daniel Noble - daniel.noble@anu.edu.au
#' @export

get_pred <- function (model, mod) {
  
  name <- firstup(as.character(stringr::str_replace(row.names(model$beta), {{mod}}, "")))
  len <- length(name)
  
  if(len != 1){
    newdata <- matrix(NA, ncol = len, nrow = len)
    
    pred <- metafor::predict.rma(model, newmods = diag(len),
                                 tau2.levels = 1:len,
                                 gamma2.levels = 1:len)
  }
  else {
    pred <- metafor::predict.rma(model)
  }
  lowerPR <- pred$cr.lb
  upperPR <- pred$cr.ub
  
  table <- tibble::tibble(name = factor(name, levels = name, labels = name), lowerPR = lowerPR, upperPR = upperPR)
  return(table)
}

#' @title firstup
#' @description Uppercase moderator names
#' @param x a character string
#' @author Shinichi Nakagawa - s.nakagawa@unsw.edu.au
#' @author Daniel Noble - daniel.noble@anu.edu.au
#' @return Returns a character string with all combinations of the moderator level names with upper case first letters
#' @export
firstup <- function(x) {
  substr(x, 1, 1) <- toupper(substr(x, 1, 1))
  x
}

#' @title get_data
#' @description Collects and builds the data used to fit the rma.mv or rma model in metafor
#' @param model rma.mv object
#' @param mod the moderator variable
#' @author Shinichi Nakagawa - s.nakagawa@unsw.edu.au
#' @author Daniel Noble - daniel.noble@anu.edu.au
#' @return Returns a data frame
#' @export
#'
get_data <- function(model, mod){
  X <- as.data.frame(model$X)
  names <- vapply(stringr::str_split(colnames(X), {{mod}}), function(x) paste(unique(x), collapse = ""), character(1L))
  
  moderator <- matrix(ncol = 1, nrow = dim(X)[1])
  
  for(i in 1:ncol(X)){
    moderator <- ifelse(X[,i] == 1, names[i], moderator)
  }
  moderator <- firstup(moderator)
  yi <- model$yi
  vi <- model$vi
  type <- attr(model$yi, "measure")
  
  data <- data.frame(yi, vi, moderator, type)
  return(data)
  
}

#' @title mod_results
#' @description Using a metafor model object of class rma or rma.mv it creates a table of model results containing the mean effect size estimates for all levels of a given categorical moderator, their corresponding confidence intervals and prediction intervals
#' @param model rma.mv object
#' @param mod the name of a moderator; put "Int" if the intercept model (meta-analysis) or no moderators.
#' @return A data frame containing all the model results including mean effect size estimate, confidence and prediction intervals
#' @author Shinichi Nakagawa - s.nakagawa@unsw.edu.au
#' @author Daniel Noble - daniel.noble@anu.edu.au
#' @examples
#' \dontrun{data(eklof)
#' eklof<-metafor::escalc(measure="ROM", n1i=N_control, sd1i=SD_control,
#' m1i=mean_control, n2i=N_treatment, sd2i=SD_treatment, m2i=mean_treatment,
#' data=eklof)
#' # Add the unit level predictor
#' eklof$Datapoint<-as.factor(seq(1, dim(eklof)[1], 1))
#' # fit a MLMR - accouting for some non-independence
#' eklof_MR<-metafor::rma.mv(yi=yi, V=vi, mods=~ Grazer.type-1, random=list(~1|ExptID,
#' ~1|Datapoint), data=eklof)
#' results <- mod_results(eklof_MR, mod = "Grazer.type")
#' }
#' @export

mod_results <- function(model, mod) {
  
  if(all(class(model) %in% c("rma.mv", "rma.uni", "rma")) == FALSE) {stop("Sorry, you need to fit a metafor model of class rma.mv or rma")}
  
  data <- get_data(model, mod)
  
  # Get confidence intervals
  CI <- get_est(model, mod)
  
  # Get prediction intervals
  PI <- get_pred(model, mod)
  
  model_results <- list(mod_table = cbind(CI, PI[,-1]), data = data)
  
  class(model_results) <- "orchard"
  
  return(model_results)
  
}
# TODO - I think we can improve `mod` bit?

#' @title print.orchard
#' @description Print method for class 'orchard'
#' @param object x an R object of class orchard
#' @param ... Other arguments passed to print
#' @author Shinichi Nakagawa - s.nakagawa@unsw.edu.au
#' @author Daniel Noble - daniel.noble@anu.edu.au
#' @return Returns a data frame
#' @export
#'
print.orchard <- function(object, ...){
  return(object$mod_table)
}

Loading raw data and creating a list of trait data

Below we see sub-strain information and sample size for each sub-strains

# loading data
allometry <- readRDS(here("data/allometryNEW.rds"))


#STEP 1 remove rows with missing  data and NA 
allometrynew<-allometry[complete.cases(allometry),]

# getting rid of NA for data_point and weight

allometrynew2 <- allometrynew %>% 
  filter(!is.na(data_point), !is.na(weight)) %>% 
  group_by(parameter_name, sex, metadata_group, strain_name) %>%
  mutate(count = n()) %>% 
  ungroup() %>% 
  group_by(parameter_name) %>% # adjusting interval data
  mutate(min_val = min(data_point),
         data_point2 = if_else(min_val > 0, data_point, data_point + abs(min_val)),
         min_val2 = min( data_point[data_point!=min(data_point)]),
         data_point2 = if_else(min_val == 0, data_point2 + min_val2, data_point2),
         ratio_int =  if_else(min_val > 0, "ratio", "interval"),
         new_min = min(data_point2),
         nmeta = n_distinct(metadata_group),
         nstrain = n_distinct(strain_name),
         sex = as.factor(sex),
         parameter_name = if_else(parameter_name == "Latency to fall_Mean", 
                                  "Latency to fall mean"  , parameter_name)) %>% 
  ungroup() %>% 
  filter(count > 49) %>% # this can be adjusted
  filter(parameter_name != "BMC/Body weight", 
         parameter_name != "Body weight",  
         parameter_name != "Body Weight", 
         parameter_name != "Body weight after experiment" , 
         parameter_name != "Body weight before experiment",
         parameter_name != "Test duration") %>% 
  filter(!is.infinite(data_point2), !is.infinite(log(data_point2))) # removing infite and 0

# dim(allometry)
# dim(allometrynew)
# dim(allometrynew2)
# 
# # the number of traits
# length(unique(allometrynew2$parameter_name))
# 
# # the number of substrains
# length(unique(allometrynew2$strain_name))
# strain information
unique(allometrynew2$strain_name)
## [1] "C57BL/6N"                   "B6Brd;B6Dnk;B6N-Tyr<c-Brd>"
## [3] "C57BL/6N;C57BL/6NTac"       "C57BL/6NTac"               
## [5] "C57BL/6NJ"                  "C57BL/6NCrl"               
## [7] "C57BL/6NJcl"
# # check there is no 0
# sum(is.infinite(log(allometrynew2$data_point2)))

# # the number of interval scale traits
# allometrynew2 %>% group_by(parameter_name) %>% summarise(ratio_int = ratio_int[1]) -> sum_ri
# sum(sum_ri$ratio_int == "interval")


#split dataframe by parameter to generate a list of dfs
#all_list<-split(allometrynew2, allometrynew2$parameter_name)

#saveRDS(all_list, file = here("data", "dat_list2.rds"))

Loading a list of trait data and group category

# loading data
dat_list <- readRDS(here("data/dat_list2.rds"))

# grouping for category and parameter_group (this is from Zajitschek et al.
# 2020 eLife; slightly modfied)
dat_category <- read_csv(here("data/cateogry_parameter3.csv"))

Data preparation

Obtaining intersepcts, slopes, residual SDs and model fits

#run function across list of matrices
processing <-map_dfr(dat_list, get_para_poss)
dat <- data.frame(processing, row.names = NULL)

dat %>% left_join(dat_category, by = ("parameter_name" = "parameter_name") ) %>% arrange(Category)  -> dat

dim(dat)

#write_csv(dat, here("data/test4.csv"))
write_csv(dat, here("data/data_parameters7.csv"))


# first getting p values - the contrasts between males and females for 

dat <-read_csv(here("data/data_parameters7.csv"))

#assess number of traits with sig shifts in intercept and slope

# getting lnVR to compare SDs and SD and Zr (variance for Zr)

dat %>% mutate(lnVR = log(f_sd/m_sd) + 1/(2*(f_n-3)) - 1/(2*(m_n-3)), 
               VlnVR = 1/(2*(f_n-3)) + 1/(2*(m_n-3)), 
               low_lnVR = lnVR - qnorm(0.975)*VlnVR, 
               high_lnVR = lnVR + qnorm(0.975)*VlnVR,
               t_val_sd = lnVR/sqrt(VlnVR),
               p_val_sd = 2*(1-pt(abs(t_val_sd), f_n-1 + m_n-1)),
               # r squared
               Zr = atanh(r_m),
               VZr = 1/((f_n + m_n) - 3)
               ) -> dat

write_csv(dat, here("data/data_parameters8.csv"))

Dataset and meta-data

# loading data
dat <- read_csv(here("data/data_parameters8.csv"))
# creating observation level random effect
dat$obs <- 1:dim(dat)[1]
# making character strings into factors
dat <- dat %>%
    mutate_if(is.character, as.factor)
# visualizing
kable(dat, "html") %>%
    kable_styling("striped", position = "left") %>%
    scroll_box(width = "100%", height = "250px")
parameter_name procedure_name f_n m_n f_intercept f_intercept_se f_slope f_slope_se m_intercept m_intercept_se m_slope m_slope_se fm_diff_int fm_diff_int_se fm_diff_int_p fm_diff_slope fm_diff_slope_se fm_diff_slope_p f_sd m_sd r_m r_c Category parameter_group lnVR VlnVR low_lnVR high_lnVR t_val_sd p_val_sd Zr VZr obs
activity onset with respect to dark onset median Sleep Wake 273 259 0.3929632 0.0450594 -0.0083631 0.0448121 0.2542691 0.0376782 -0.0179367 0.0336847 0.1386941 0.0556845 0.0130907 0.0095736 0.0547846 0.8613509 0.3593388 0.2969758 0.2241775 0.3920506 Behaviour activity onset with respect to dark onset median 0.1905138 0.0038050 0.1830562 0.1979714 3.0885202 0.0021170 0.2280504 0.0018904 1
average duration Rotarod 621 612 4.0963541 0.0599142 -0.0589499 0.0563663 4.0553848 0.0605089 -0.0509210 0.0564671 0.0409693 0.0507882 0.4200245 -0.0080289 0.0473202 0.8652985 0.5134660 0.5715872 0.1198498 0.4012784 Behaviour average duration -0.1072451 0.0016301 -0.1104400 -0.1040502 -2.6562746 0.0080030 0.1204287 0.0008130 2
breath rate during sleep mean Sleep Wake 864 842 0.9671175 0.0056705 0.0298463 0.0047447 1.0100184 0.0051139 0.0305743 0.0037669 -0.0429009 0.0060587 0.0000000 -0.0007280 0.0054384 0.8935342 0.0748341 0.0649490 0.5035914 0.6860983 Behaviour breath rate during sleep mean 0.1416557 0.0011767 0.1393495 0.1439619 4.1295925 0.0000381 0.5541062 0.0005872 3
breath rate during sleep standard deviation Sleep Wake 864 842 -0.2493341 0.0070060 0.0006745 0.0065398 -0.2209202 0.0064617 0.0076416 0.0055388 -0.0284139 0.0085624 0.0009263 -0.0069671 0.0079197 0.3791537 0.1057847 0.1010671 0.1568210 0.4112851 Behaviour breath rate during sleep standard deviation 0.0456060 0.0011767 0.0432998 0.0479122 1.3295208 0.1838542 0.1581258 0.0005872 4
center average speed Open Field 8692 8660 2.3395900 0.2404754 0.0125155 0.0114003 2.2539661 0.2404728 0.0113172 0.0110078 0.0856239 0.0070941 0.0000000 0.0011983 0.0064985 0.8536991 0.2614795 0.2631793 0.0413201 0.9528332 Behaviour center average speed -0.0064800 0.0001153 -0.0067060 -0.0062540 -0.6034727 0.5462021 0.0413436 0.0000576 5
center distance travelled Open Field 9025 8992 7.2483880 0.2945856 -0.0122990 0.0276790 7.1996680 0.2945709 0.0012373 0.0266997 0.0487201 0.0150661 0.0012243 -0.0135363 0.0136226 0.3204001 0.5665792 0.5335339 0.0245238 0.8852912 Behaviour center distance travelled 0.0600940 0.0001110 0.0598764 0.0603117 5.7027517 0.0000000 0.0245288 0.0000555 6
center permanence time Open Field 9381 9328 5.0773365 0.1499848 -0.0420593 0.0260885 5.1327209 0.1499634 -0.0317306 0.0247237 -0.0553843 0.0166622 0.0008895 -0.0103287 0.0150532 0.4926283 0.6482511 0.5852829 0.0293690 0.7140145 Behaviour center time 0.1021825 0.0001069 0.1019729 0.1023921 9.8813303 0.0000000 0.0293774 0.0000535 7
center resting time Open Field 6471 6443 3.2498507 0.3279626 -0.0178543 0.0482180 3.3168406 0.3277007 -0.0381292 0.0464941 -0.0669899 0.0336948 0.0468200 0.0202749 0.0313858 0.5182989 1.0453107 0.9485191 0.0152589 0.7500625 Behaviour center time 0.0971672 0.0001549 0.0968636 0.0974709 7.8060866 0.0000000 0.0152601 0.0000775 8
conditioning baseline % freezing time Fear Conditioning 168 238 1.8021540 0.2347223 -0.1616376 0.1852964 2.0698578 0.1653381 -0.1460974 0.1560132 -0.2677038 0.2532856 0.2913190 -0.0155402 0.2367137 0.9476964 0.9855756 0.9794872 0.0586042 0.6517738 Behaviour conditioning baseline freezing time 0.0070993 0.0051580 -0.0030101 0.0172088 0.0988506 0.9213059 0.0586714 0.0024814 9
conditioning baseline average motion index Fear Conditioning 168 238 4.6543336 0.1247686 0.1191657 0.0870117 4.4562756 0.1013402 0.0046073 0.0826992 0.1980580 0.1234018 0.1094536 0.1145584 0.1169754 0.3281306 0.4371868 0.5098784 0.0675720 0.7970570 Behaviour conditioning baseline average motion index -0.1529091 0.0051580 -0.1630185 -0.1427997 -2.1290912 0.0338509 0.0676751 0.0024814 10
conditioning baseline freeze count Fear Conditioning 291 333 1.1929093 0.3911518 -0.1234196 0.1235858 1.5339730 0.3879389 -0.1843134 0.1268607 -0.3410637 0.1574600 0.0307668 0.0608937 0.1532962 0.6913629 0.7766872 0.8537249 0.0802702 0.6742417 Behaviour conditioning baseline freeze count -0.0943504 0.0032513 -0.1007228 -0.0879781 -1.6546947 0.0984909 0.0804433 0.0016103 11
conditioning baseline freezing time Fear Conditioning 291 333 1.0636939 0.7763817 -0.1456472 0.1652806 1.4295471 0.7737160 -0.2034467 0.1725388 -0.3658532 0.2176805 0.0934298 0.0577995 0.2116368 0.7848804 1.0449141 1.1709399 0.0549177 0.7739505 Behaviour conditioning baseline freezing time -0.1136512 0.0032513 -0.1200235 -0.1072788 -1.9931866 0.0466774 0.0549730 0.0016103 12
conditioning baseline maximum motion index Fear Conditioning 168 238 6.9535028 0.0744705 0.1674745 0.0582072 6.7979581 0.0552786 0.0195030 0.0526346 0.1555447 0.0813038 0.0565965 0.1479715 0.0766870 0.0545194 0.3055010 0.3349078 0.1278045 0.6598783 Behaviour conditioning baseline maximum motion index -0.0909995 0.0051580 -0.1011089 -0.0808901 -1.2670678 0.2058610 0.1285072 0.0024814 13
conditioning post-shock % freezing time Fear Conditioning 168 238 3.0818654 0.1396283 -0.2259029 0.1124000 3.3747223 0.0969107 -0.1139595 0.0948784 -0.2928569 0.1537518 0.0576834 -0.1119434 0.1439286 0.4372617 0.6048891 0.6061758 0.1103729 0.6067092 Behaviour conditioning post-shock freezing time -0.0012223 0.0051580 -0.0113317 0.0088871 -0.0170191 0.9864298 0.1108244 0.0024814 14
conditioning post-shock average motion index Fear Conditioning 168 238 4.1928388 0.1792397 0.2909889 0.1400271 3.8386335 0.1206153 0.1262876 0.1070792 0.3542052 0.1865821 0.0585173 0.1647013 0.1721488 0.3393998 0.7496078 0.6490194 0.1079650 0.7026911 Behaviour conditioning post-shock average motion index 0.1449902 0.0051580 0.1348807 0.1550996 2.0188286 0.0441652 0.1083874 0.0024814 15
conditioning post-shock freeze count Fear Conditioning 291 333 2.4912997 0.2398401 -0.2201170 0.0854729 2.7568871 0.2352243 -0.1675540 0.0807586 -0.2655875 0.1150677 0.0213891 -0.0525630 0.1121019 0.6393496 0.6259041 0.6204732 0.1372844 0.5597664 Behaviour conditioning post-shock freeze count 0.0089358 0.0032513 0.0025634 0.0153081 0.1567136 0.8755214 0.1381567 0.0016103 16
conditioning post-shock freezing time Fear Conditioning 291 333 2.9607659 0.5291496 -0.2672919 0.1229912 3.2309523 0.5252200 -0.2089406 0.1169762 -0.2701864 0.1564922 0.0848542 -0.0583512 0.1519567 0.7011375 0.8335708 0.8205890 0.1170610 0.7214260 Behaviour conditioning post-shock freezing time 0.0159172 0.0032513 0.0095449 0.0222896 0.2791525 0.7802206 0.1176002 0.0016103 17
conditioning post-shock maximum motion index Fear Conditioning 168 238 7.1104114 0.1231744 0.1126414 0.1041915 7.0837905 0.0767801 0.0857655 0.0810997 0.0266209 0.1392151 0.8484697 0.0268759 0.1299582 0.8362903 0.5932629 0.5469635 0.1438784 0.4382333 Behaviour conditioning post-shock maximum motion index 0.0821582 0.0051580 0.0720488 0.0922677 1.1439631 0.2533163 0.1448838 0.0024814 18
conditioning shock average motion index Fear Conditioning 168 238 6.5785074 0.0790756 0.1174832 0.0626659 6.6413140 0.0524880 0.0549625 0.0481255 -0.0628066 0.0835782 0.4529048 0.0625207 0.0772154 0.4187004 0.3375430 0.2949573 0.2707497 0.6968581 Behaviour conditioning shock average motion index 0.1357650 0.0051580 0.1256556 0.1458744 1.8903785 0.0594228 0.2776727 0.0024814 19
conditioning shock maximum motion index Fear Conditioning 168 238 7.6842121 0.0794155 0.0555018 0.0659558 7.8455593 0.0527638 0.0661811 0.0543784 -0.1613472 0.0895806 0.0725935 -0.0106792 0.0839023 0.8987949 0.3655110 0.3590340 0.3076035 0.5671884 Behaviour conditioning shock maximum motion index 0.0187821 0.0051580 0.0086726 0.0288915 0.2615195 0.7938252 0.3178963 0.0024814 20
conditioning shock minimum motion index Fear Conditioning 168 238 2.8310036 0.3579315 0.6692219 0.3035130 2.3645407 0.2376721 0.0029774 0.2546726 0.4664629 0.4140573 0.2607445 0.6662445 0.3903782 0.0888252 1.7290140 1.7584580 0.1233223 0.4151157 Behaviour conditioning shock minimum motion index -0.0159833 0.0051580 -0.0260928 -0.0058739 -0.2225504 0.8239979 0.1239533 0.0024814 21
conditioning tone % freezing time Fear Conditioning 168 238 2.6521544 0.2082752 -0.0068658 0.1739291 2.6008746 0.1311233 -0.0926523 0.1348604 0.0512798 0.2322901 0.8254177 0.0857866 0.2161209 0.6916698 0.9739933 0.8838882 0.0701445 0.4899381 Behaviour conditioning tone freezing time 0.0979765 0.0051580 0.0878671 0.1080860 1.3642155 0.1732592 0.0702599 0.0024814 22
conditioning tone average motion index Fear Conditioning 168 238 4.3384394 0.2055953 0.1805578 0.1661248 4.3272623 0.1281358 -0.0186303 0.1196458 0.0111771 0.2181663 0.9591717 0.1991882 0.2003315 0.3208089 0.9109603 0.7319176 0.0991057 0.6238896 Behaviour conditioning tone average motion index 0.2197340 0.0051580 0.2096246 0.2298435 3.0595548 0.0023644 0.0994321 0.0024814 23
conditioning tone freeze count Fear Conditioning 291 333 1.1864828 0.1910845 -0.0715428 0.0900741 1.2018581 0.1852017 -0.0636802 0.0876415 -0.0153754 0.1270620 0.9037329 -0.0078626 0.1242257 0.9495578 0.6804015 0.7035057 0.0768375 0.4772825 Behaviour conditioning tone freeze count -0.0331720 0.0032513 -0.0395443 -0.0267996 -0.5817621 0.5609377 0.0769892 0.0016103 24
conditioning tone freezing time Fear Conditioning 291 333 1.1182331 0.2264972 -0.1225882 0.1555423 1.1305938 0.2090955 -0.1159762 0.1489973 -0.0123607 0.2179966 0.9548051 -0.0066120 0.2124703 0.9751861 1.1543608 1.1639042 0.0866774 0.4696605 Behaviour conditioning tone freezing time -0.0080124 0.0032513 -0.0143847 -0.0016400 -0.1405188 0.8882956 0.0868955 0.0016103 25
conditioning tone maximum motion index Fear Conditioning 168 238 6.4593455 0.1272725 0.1265700 0.1040948 6.4904289 0.0829776 -0.0692060 0.0820900 -0.0310834 0.1397156 0.8240810 0.1957760 0.1298561 0.1326038 0.5705884 0.5233730 0.1120496 0.5730043 Behaviour conditioning tone maximum motion index 0.0872763 0.0051580 0.0771669 0.0973857 1.2152262 0.2249895 0.1125221 0.0024814 26
context % freezing time Fear Conditioning 168 238 3.6727950 0.0927098 -0.1188721 0.0770129 3.7541878 0.0625942 0.0137215 0.0647980 -0.0813929 0.1052126 0.4397190 -0.1325936 0.0988040 0.1805230 0.4262883 0.4303336 0.0823129 0.4988817 Behaviour context % freezing time -0.0085421 0.0051580 -0.0186516 0.0015673 -0.1189398 0.9053821 0.0824996 0.0024814 27
context average motion index Fear Conditioning 168 238 3.6132459 0.1661232 0.1971578 0.1338535 3.4325415 0.1190793 -0.0054102 0.1184090 0.1807044 0.1857027 0.3312240 0.2025681 0.1749436 0.2477400 0.7176001 0.7674251 0.0685276 0.5846227 Behaviour context average motion index -0.0662258 0.0051580 -0.0763352 -0.0561164 -0.9221216 0.3570155 0.0686352 0.0024814 28
context freeze count Fear Conditioning 291 333 3.4475236 0.2234376 -0.1218805 0.0652260 3.6401049 0.2204180 -0.1080921 0.0610306 -0.1925814 0.0904250 0.0336669 -0.0137884 0.0886111 0.8764045 0.5117614 0.5093700 0.0931394 0.5561545 Behaviour context freeze count 0.0049047 0.0032513 -0.0014676 0.0112771 0.0860176 0.9314801 0.0934102 0.0016103 29
context freezing time Fear Conditioning 291 333 4.1179455 0.6446314 -0.1518358 0.0848966 4.2804907 0.6428553 -0.0606357 0.0799279 -0.1625452 0.1180718 0.1692143 -0.0912001 0.1153785 0.4296327 0.6500497 0.6477469 0.0505653 0.8220115 Behaviour context freezing time 0.0037698 0.0032513 -0.0026025 0.0101422 0.0661141 0.9473083 0.0506084 0.0016103 30
context maximum motion index Fear Conditioning 168 238 6.7774427 0.0878068 0.1698320 0.0711927 6.6407575 0.0661459 -0.0328102 0.0676252 0.1366852 0.1011153 0.1773728 0.2026422 0.0962456 0.0360058 0.3812654 0.4496842 0.1072734 0.5536005 Behaviour context maximum motion index -0.1641473 0.0051580 -0.1742567 -0.1540378 -2.2855702 0.0227967 0.1076877 0.0024814 31
cue baseline % freezing time Fear Conditioning 168 238 1.9889040 0.2069501 -0.3515990 0.1651238 2.7587549 0.1498715 -0.3168469 0.1468298 -0.7698509 0.2294514 0.0008855 -0.0347522 0.2161583 0.8723715 0.8787548 0.9444639 0.1592520 0.6219508 Behaviour cue baseline % freezing time -0.0712089 0.0051580 -0.0813183 -0.0610995 -0.9915052 0.3220324 0.1606191 0.0024814 32
cue baseline average motion index Fear Conditioning 168 238 4.8603364 0.1235994 0.2382554 0.0959988 4.3540635 0.0994163 0.2123462 0.0975502 0.5062730 0.1396443 0.0003340 0.0259092 0.1338922 0.8466804 0.4960040 0.6381056 0.1636089 0.6282879 Behaviour cue baseline average motion index -0.2510172 0.0051580 -0.2611266 -0.2409078 -3.4951386 0.0005263 0.1650926 0.0024814 33
cue baseline freeze count Fear Conditioning 291 333 2.1921003 0.4330090 -0.2772443 0.0935855 2.7558687 0.4313170 -0.1703181 0.0962167 -0.5637684 0.1240540 0.0000069 -0.1069261 0.1203039 0.3745254 0.6001634 0.6554146 0.1412103 0.7781577 Behaviour cue baseline freeze count -0.0878450 0.0032513 -0.0942174 -0.0814726 -1.5406040 0.1239218 0.1421603 0.0016103 34
cue baseline freezing time Fear Conditioning 291 333 2.4155381 0.2585257 -0.3717700 0.1083950 3.1504651 0.2545311 -0.2692392 0.1149071 -0.7349270 0.1590950 0.0000049 -0.1025308 0.1551362 0.5089668 0.7603859 0.8583266 0.1691469 0.6568488 Behaviour cue baseline freezing time -0.1209377 0.0032513 -0.1273101 -0.1145654 -2.1209764 0.0343188 0.1707883 0.0016103 35
cue baseline maximum motion index Fear Conditioning 168 238 7.2343443 0.0765119 0.1042197 0.0636010 7.0804259 0.0551632 0.0420783 0.0579975 0.1539183 0.0890902 0.0849832 0.0621414 0.0845683 0.4629788 0.3505362 0.3935991 0.0877404 0.4727205 Behaviour cue baseline maximum motion index -0.1149662 0.0051580 -0.1250756 -0.1048567 -1.6007775 0.1102078 0.0879666 0.0024814 36
cue tone % freezing time Fear Conditioning 168 238 3.1168025 0.1514895 -0.3542802 0.1246391 3.5998841 0.0951315 -0.0912398 0.0941415 -0.4830815 0.1654432 0.0037420 -0.2630404 0.1530774 0.0866709 0.6892142 0.5973727 0.1496055 0.5705014 Behaviour cue tone % freezing time 0.1439135 0.0051580 0.1338041 0.1540229 2.0038368 0.0457547 0.1507369 0.0024814 37
dark side distance travelled Light-Dark Test 111 84 8.1153014 0.0753531 0.0064378 0.0822942 8.0124258 0.0744948 0.0935716 0.0630834 0.1028756 0.1024815 0.3169980 -0.0871338 0.1018222 0.3934432 0.3355864 0.2443481 0.0929921 0.4230523 Behaviour distance travelled 0.3157423 0.0108025 0.2945698 0.3369147 3.0378840 0.0027122 0.0932615 0.0052083 38
dark side time spent Light-Dark Test 1844 1791 6.6143141 0.2056841 0.0541208 0.0380300 6.4560785 0.2061648 0.0511079 0.0382597 0.1582356 0.0199875 0.0000000 0.0030130 0.0196223 0.8779760 0.3454670 0.4998886 0.1014382 0.6537127 Behaviour time spent -0.3694963 0.0005512 -0.3705767 -0.3684159 -15.7377342 0.0000000 0.1017883 0.0002753 39
dark sleep bout lengths mean Sleep Wake 864 842 5.2922976 0.0133363 0.0473609 0.0130485 5.5092929 0.0139672 0.0972972 0.0128391 -0.2169953 0.0183454 0.0000000 -0.0499363 0.0173861 0.0041321 0.2158973 0.2465996 0.5793367 0.6223104 Behaviour dark sleep bout lengths mean -0.1329786 0.0011767 -0.1352848 -0.1306723 -3.8766331 0.0001099 0.6614637 0.0005872 40
dark sleep bout lengths standard deviation Sleep Wake 864 842 5.6445364 0.0174139 0.0221068 0.0165579 5.8472614 0.0160181 0.0141177 0.0140271 -0.2027250 0.0216646 0.0000000 0.0079891 0.0202119 0.6927013 0.2704850 0.2587710 0.3787037 0.4972531 Behaviour dark sleep bout lengths standard deviation 0.0442578 0.0011767 0.0419515 0.0465640 1.2902167 0.1971505 0.3985454 0.0005872 41
data confidence level Sleep Wake 864 842 -0.0168946 0.0030380 0.0060759 0.0029289 -0.0079778 0.0019265 0.0035108 0.0015344 -0.0089168 0.0032503 0.0061510 0.0025651 0.0031151 0.4103918 0.0499253 0.0258886 0.1984623 0.4414541 Behaviour data confidence level 0.6567093 0.0011767 0.6544030 0.6590155 19.1445974 0.0000000 0.2011313 0.0005872 42
distance travelled - total Open Field 8942 8881 8.9043516 0.2183624 0.0086096 0.0184437 8.8102005 0.2183619 0.0030167 0.0182533 0.0941511 0.0056040 0.0000000 0.0055929 0.0050663 0.2696395 0.2055166 0.1962026 0.0543498 0.9672064 Behaviour distance travelled - total 0.0463786 0.0001123 0.0461586 0.0465986 4.3774111 0.0000121 0.0544034 0.0000561 43
fecal boli Light-Dark Test 1504 1489 0.5787835 0.0269220 -0.0778628 0.0274033 1.0972487 0.0294130 -0.0194165 0.0271624 -0.5184652 0.0382840 0.0000000 -0.0584462 0.0363997 0.1084593 0.6531191 0.7751150 0.2986857 0.3596170 Behaviour fecal boli -0.1712553 0.0006696 -0.1725676 -0.1699429 -6.6182180 0.0000000 0.3080759 0.0003344 44
forelimb and hindlimb grip strength measurement mean Grip Strength 12362 12416 5.2933529 0.0459615 0.0545330 0.0049107 5.2826804 0.0459493 0.0556144 0.0048535 0.0106725 0.0031752 0.0007775 -0.0010814 0.0029108 0.7102659 0.1275168 0.1313132 0.2022502 0.8611055 Behaviour limb strength -0.0293372 0.0000807 -0.0294954 -0.0291789 -3.2649952 0.0010961 0.2050777 0.0000404 45
forelimb and hindlimb grip strength normalised against body weight Grip Strength 12355 12405 2.1845186 0.0461535 -0.0882221 0.0045416 2.1662528 0.0461424 -0.0904439 0.0044457 0.0182658 0.0031645 0.0000000 0.0022218 0.0028977 0.4432490 0.1269845 0.1310596 0.3600477 0.8752096 Behaviour limb strength -0.0315873 0.0000808 -0.0317457 -0.0314290 -3.5141450 0.0004420 0.3769407 0.0000404 46
forelimb grip strength measurement mean Grip Strength 12367 12430 4.5980573 0.0548313 0.0563462 0.0063167 4.6020124 0.0548080 0.0523697 0.0062490 -0.0039550 0.0039822 0.3206386 0.0039765 0.0036568 0.2768645 0.1634425 0.1623253 0.1814901 0.8474284 Behaviour limb strength 0.0068591 0.0000807 0.0067010 0.0070172 0.7636581 0.4450783 0.1835231 0.0000403 47
forelimb grip strength normalised against body weight Grip Strength 12360 12419 1.4908015 0.0555700 -0.0863769 0.0061208 1.4867869 0.0555469 -0.0937890 0.0060402 0.0040146 0.0039777 0.3128535 0.0074121 0.0036501 0.0423029 0.1631490 0.1621222 0.2898712 0.8578859 Behaviour limb strength 0.0063132 0.0000807 0.0061549 0.0064714 0.7026192 0.4822997 0.2984256 0.0000404 48
horizontal activity Light-Dark Test 111 84 7.3933457 0.0721430 -0.0525762 0.0755423 7.2351411 0.0871729 0.1575586 0.0731973 0.1582046 0.1070974 0.1416246 -0.2101347 0.1029029 0.0428183 0.2969726 0.2843255 0.1655313 0.5358302 Behaviour horizontal activity 0.0419769 0.0108025 0.0208045 0.0631494 0.4038770 0.6867503 0.1670685 0.0052083 49
latency to center entry Open Field 6566 6537 2.0931259 0.2290947 0.1083144 0.0610565 2.0426466 0.2282904 0.0442207 0.0588930 0.0504794 0.0620672 0.4160619 0.0640937 0.0578094 0.2675799 1.8985648 1.8992626 0.0290622 0.4640912 Behaviour latency to center entry -0.0003678 0.0001527 -0.0006671 -0.0000685 -0.0297622 0.9762572 0.0290704 0.0000763 50
latency to fall mean Rotarod 1869 1970 4.8010718 0.0218026 -0.1095312 0.0149888 4.8406826 0.0210153 -0.0718215 0.0129962 -0.0396108 0.0200023 0.0477464 -0.0377097 0.0180761 0.0370364 0.3550101 0.3505268 0.1650963 0.6629921 Behaviour latency to fall mean 0.0127228 0.0005221 0.0116994 0.0137462 0.5567832 0.5777081 0.1666213 0.0002607 51
latency to first transition into dark Light-Dark Test 1844 1791 2.0119635 0.9883525 0.0129457 0.0838104 2.4456263 0.9890541 -0.0377039 0.0755815 -0.4336628 0.0776939 0.0000000 0.0506497 0.0684271 0.4592322 1.4343852 1.4171543 0.0900926 0.7892896 Behaviour latency to first transition into dark 0.0120774 0.0005512 0.0109970 0.0131578 0.5144064 0.6069992 0.0903376 0.0002753 52
latency to immobility Tail Suspension 586 585 3.0946530 0.5394271 0.0099267 0.0263194 3.1363488 0.5391710 -0.0618324 0.0250611 -0.0416958 0.0308780 0.1771912 0.0717591 0.0275393 0.0092954 0.3337296 0.3220518 0.0394455 0.9219264 Behaviour latency to immobility 0.0356173 0.0017167 0.0322526 0.0389821 0.8596254 0.3901718 0.0394660 0.0008562 53
learning difference Rotarod 620 612 4.7360646 0.0370784 -0.0416609 0.0375144 4.7515668 0.0356695 0.0048195 0.0353372 -0.0155022 0.0324975 0.6334354 -0.0464803 0.0326130 0.1543708 0.3920740 0.3710799 0.0517688 0.1522584 Behaviour learning difference 0.0550227 0.0016314 0.0518252 0.0582201 1.3622683 0.1733626 0.0518151 0.0008137 54
learning slope Rotarod 620 611 3.5849741 0.0364960 -0.0296480 0.0368189 3.6061067 0.0330152 -0.0072492 0.0325646 -0.0211326 0.0326756 0.5179301 -0.0223989 0.0325882 0.4920151 0.4110924 0.3390814 0.0362355 0.1704154 Behaviour learning slope 0.1925660 0.0016327 0.1893658 0.1957661 4.7656357 0.0000021 0.0362514 0.0008143 55
light side distance travelled Light-Dark Test 111 84 6.2160171 0.2228831 -0.3434353 0.2377321 5.8556402 0.2885069 0.4879536 0.2461458 0.3603770 0.3507006 0.3057225 -0.8313889 0.3357293 0.0143335 0.9393093 0.9889885 0.1851685 0.4948512 Behaviour distance travelled -0.0530811 0.0108025 -0.0742535 -0.0319086 -0.5107144 0.6101347 0.1873295 0.0052083 56
light side time spent Light-Dark Test 1844 1791 4.9959798 0.4866964 -0.1117423 0.0873124 5.2896809 0.4868624 -0.1209044 0.0861397 -0.2937011 0.0307513 0.0000000 0.0091621 0.0280279 0.7437696 0.5951422 0.5804452 0.1016756 0.8330696 Behaviour time spent 0.0249970 0.0005512 0.0239166 0.0260774 1.0646816 0.2870908 0.1020282 0.0002753 57
light sleep bout lengths mean Sleep Wake 864 842 6.2863405 0.0109107 0.0075886 0.0104969 6.4285493 0.0108855 -0.0142297 0.0097947 -0.1422088 0.0143728 0.0000000 0.0218182 0.0134846 0.1058660 0.1716964 0.1848297 0.3447557 0.4550385 Behaviour light sleep bout lengths mean -0.0737221 0.0011767 -0.0760283 -0.0714158 -2.1491689 0.0317615 0.3594797 0.0005872 58
light sleep bout lengths standard deviation Sleep Wake 864 842 6.6743858 0.0179187 -0.0245829 0.0164860 6.7915747 0.0157157 -0.0695019 0.0130185 -0.1171889 0.0209498 0.0000000 0.0449190 0.0192945 0.0200369 0.2668549 0.2323942 0.1541689 0.4349426 Behaviour light sleep bout lengths standard deviation 0.1382547 0.0011767 0.1359485 0.1405610 4.0304462 0.0000581 0.1554081 0.0005872 59
locomotor activity Combined SHIRPA and Dysmorphology 9460 9489 3.0430039 0.0632753 0.0154575 0.0200237 2.9032303 0.0632905 0.0006849 0.0198709 0.1397735 0.0101521 0.0000000 0.0147726 0.0092607 0.1106868 0.3437165 0.3873084 0.1338877 0.6564308 Behaviour locomotor activity -0.1194040 0.0001056 -0.1196109 -0.1191970 -11.6205751 0.0000000 0.1346964 0.0000528 60
ma threshold inducing clonic seizure Electroconvulsive Threshold Testing 788 750 1.8071320 0.0127034 0.0129308 0.0066151 1.9332268 0.0127758 0.0306331 0.0063916 -0.1260947 0.0087527 0.0000000 -0.0177023 0.0080827 0.0287037 0.0949735 0.0957594 0.4234437 0.8663596 Behaviour ma threshold inducing clonic seizure -0.0082727 0.0013063 -0.0108329 -0.0057124 -0.2288896 0.8189852 0.4518807 0.0006515 61
peak wake with respect to dark onset median Sleep Wake 864 842 1.3679602 0.0277614 0.0641907 0.0258587 1.0209329 0.0324532 -0.0030927 0.0291277 0.3470273 0.0392922 0.0000000 0.0672834 0.0363729 0.0645310 0.4081548 0.5555201 0.2851148 0.4328934 Behaviour peak wake with respect to dark onset median -0.3082735 0.0011767 -0.3105797 -0.3059673 -8.9868870 0.0000000 0.2932406 0.0005872 62
percent time in dark Light-Dark Test 1844 1791 4.3956442 0.0196318 0.0475267 0.0367672 4.2770321 0.0226399 0.0394525 0.0371551 0.1186122 0.0184895 0.0000000 0.0080742 0.0183422 0.6598205 0.3209702 0.4710839 0.1055887 0.2305118 Behaviour percent time -0.3836961 0.0005512 -0.3847765 -0.3826157 -16.3425392 0.0000000 0.1059837 0.0002753 63
percent time in light Light-Dark Test 1844 1791 2.5003619 0.2854131 -0.1401193 0.1156939 2.8327383 0.2858239 -0.1275830 0.1124837 -0.3323764 0.0437837 0.0000000 -0.0125363 0.0404367 0.7565628 0.8840319 0.7885454 0.1205723 0.5772761 Behaviour percent time 0.1142951 0.0005512 0.1132147 0.1153755 4.8681020 0.0000012 0.1211617 0.0002753 64
percentage center time Open Field 9048 8998 2.5998397 0.1572872 -0.0472088 0.0270129 2.6585972 0.1572805 -0.0330638 0.0256620 -0.0587575 0.0169937 0.0005464 -0.0141451 0.0153236 0.3559735 0.6468697 0.5842991 0.0317340 0.7235701 Behaviour percentage center time 0.1017315 0.0001109 0.1015142 0.1019488 9.6617761 0.0000000 0.0317446 0.0000554 65
periphery average speed Open Field 8693 8662 2.0081555 0.2303779 0.0169313 0.0131553 1.9081514 0.2303750 0.0104057 0.0129378 0.1000041 0.0052138 0.0000000 0.0065256 0.0047362 0.1682819 0.1930063 0.1828226 0.0505319 0.9735880 Behaviour periphery average speed 0.0542062 0.0001153 0.0539802 0.0544321 5.0485916 0.0000004 0.0505750 0.0000576 66
periphery distance travelled Open Field 9026 8992 8.5891024 0.2085688 0.0276798 0.0216123 8.4770995 0.2085715 0.0226659 0.0214775 0.1120028 0.0058077 0.0000000 0.0050139 0.0052899 0.3432319 0.2143748 0.2132647 0.0547178 0.9608289 Behaviour periphery distance travelled 0.0051917 0.0001110 0.0049740 0.0054093 0.4926869 0.6222398 0.0547725 0.0000555 67
periphery permanence time Open Field 9382 9328 6.8718134 0.0299727 0.0087570 0.0066538 6.8692905 0.0299776 0.0113802 0.0065495 0.0025229 0.0030704 0.4112669 -0.0026231 0.0027619 0.3422568 0.1094064 0.1155737 0.0528743 0.7620211 Behaviour periphery time -0.0548394 0.0001069 -0.0550489 -0.0546298 -5.3032593 0.0000001 0.0529236 0.0000535 68
periphery resting time Open Field 6472 6443 5.7436910 0.2406244 -0.0143612 0.0174661 5.7605300 0.2406232 -0.0248838 0.0173611 -0.0168390 0.0085817 0.0497643 0.0105226 0.0079993 0.1883858 0.2478046 0.2598288 0.0185898 0.9509265 Behaviour periphery time -0.0473828 0.0001549 -0.0476864 -0.0470791 -3.8067177 0.0001415 0.0185920 0.0000774 69
repetitive beam break (‘stereotypy counts’) Light-Dark Test 111 84 5.6497987 0.0811326 0.0704782 0.0909241 5.8862536 0.0849960 -0.0836239 0.0738097 -0.2364550 0.1161111 0.0433850 0.1541021 0.1158556 0.1854068 0.3798610 0.3100351 0.2835955 0.3913126 Behaviour repetitive beam break (‘stereotypy counts’) 0.2015766 0.0108025 0.1804041 0.2227490 1.9394498 0.0539044 0.2915877 0.0052083 70
side changes Light-Dark Test 1844 1791 3.6310644 0.4977882 0.1101852 0.0388187 3.4566824 0.4979360 -0.0116791 0.0350345 0.1743820 0.0276785 0.0000000 0.1218643 0.0258036 0.0000024 0.5520806 0.5215928 0.0723511 0.8544497 Behaviour side changes 0.0567989 0.0005512 0.0557185 0.0578793 2.4192018 0.0156034 0.0724777 0.0002753 71
sleep bout lengths mean Sleep Wake 864 842 5.9160819 0.0100447 0.0277226 0.0099389 6.0621562 0.0103782 0.0275142 0.0096211 -0.1460742 0.0138471 0.0000000 0.0002084 0.0132242 0.9874263 0.1663868 0.1859924 0.4645746 0.5162762 Behaviour sleep bout lengths mean -0.1114062 0.0011767 -0.1137124 -0.1090999 -3.2477479 0.0011858 0.5031293 0.0005872 72
sleep bout lengths standard deviation Sleep Wake 864 842 6.4372043 0.0158995 -0.0131297 0.0148157 6.5492646 0.0140408 -0.0542257 0.0118616 -0.1120603 0.0189274 0.0000000 0.0410960 0.0175130 0.0190716 0.2407255 0.2138523 0.1637244 0.4172816 Behaviour sleep bout lengths standard deviation 0.1183565 0.0011767 0.1160503 0.1206627 3.4503664 0.0005735 0.1652113 0.0005872 73
sleep daily percent Sleep Wake 864 842 3.7297052 0.0058653 -0.0100492 0.0055022 3.7999902 0.0050212 0.0111070 0.0042411 -0.0702851 0.0069175 0.0000000 -0.0211563 0.0064253 0.0010151 0.0899794 0.0761820 0.3731787 0.5146524 Behaviour sleep daily percent 0.1664406 0.0011767 0.1641343 0.1687468 4.8521280 0.0000013 0.3921110 0.0005872 74
sleep dark phase percent Sleep Wake 864 842 3.0339754 0.0160112 -0.0149231 0.0156794 3.2256667 0.0127382 0.0651138 0.0112816 -0.1916913 0.0191512 0.0000000 -0.0800369 0.0182338 0.0000121 0.2635742 0.2073675 0.4335350 0.5099030 Behaviour sleep phase percent 0.2398268 0.0011767 0.2375206 0.2421330 6.9915067 0.0000000 0.4642416 0.0005872 75
sleep light phase percent Sleep Wake 864 842 4.1259163 0.0051281 -0.0093598 0.0046532 4.1544696 0.0044173 -0.0103828 0.0035621 -0.0285533 0.0058411 0.0000011 0.0010229 0.0053594 0.8486586 0.0752252 0.0627068 0.1227691 0.4475686 Behaviour sleep phase percent 0.1820011 0.0011767 0.1796949 0.1843074 5.3057551 0.0000001 0.1233916 0.0005872 76
time immobile Tail Suspension 586 585 4.8382734 0.0674485 -0.0354047 0.0230744 4.9356328 0.0666591 -0.0496508 0.0239969 -0.0973593 0.0296438 0.0010553 0.0142460 0.0261203 0.5855911 0.2879618 0.3300342 0.0959699 0.6083682 Behaviour time immobile -0.1363699 0.0017167 -0.1397346 -0.1330051 -3.2912906 0.0010271 0.0962662 0.0008562 77
time mobile dark side Light-Dark Test 1844 1791 5.2877080 0.1970329 0.0720169 0.0331574 5.0330285 0.1975291 0.0262878 0.0333337 0.2546795 0.0213131 0.0000000 0.0457291 0.0197919 0.0209225 0.3556065 0.4884262 0.1758641 0.6587485 Behaviour time mobile -0.3173716 0.0005512 -0.3184520 -0.3162912 -13.5176205 0.0000000 0.1777115 0.0002753 78
time mobile light side Light-Dark Test 1844 1791 4.0674553 0.1847405 -0.0136773 0.0557180 4.1338340 0.1850950 -0.0924787 0.0537418 -0.0663788 0.0297276 0.0256226 0.0788014 0.0268309 0.0033374 0.5729983 0.5466722 0.0770543 0.5719806 Behaviour time mobile 0.0470253 0.0005512 0.0459449 0.0481057 2.0029189 0.0452602 0.0772074 0.0002753 79
total distance travelled Light-Dark Test 111 84 8.3074025 0.0704497 -0.0533860 0.0736987 8.1531407 0.0854014 0.1538294 0.0716995 0.1542618 0.1047396 0.1428034 -0.2072154 0.1005845 0.0410384 0.2895251 0.2785499 0.1664589 0.5378201 Behaviour total distance travelled 0.0371015 0.0108025 0.0159290 0.0582739 0.3569682 0.7215056 0.1680224 0.0052083 80
total holepokes Hole-board Exploration 1357 1324 3.6681451 0.0158187 0.0554439 0.0151613 3.5520795 0.0169397 0.0499979 0.0145752 0.1160656 0.0207966 0.0000000 0.0054460 0.0187895 0.7719602 0.3194311 0.3683197 0.1195821 0.3663792 Behaviour total holepokes -0.1424190 0.0007478 -0.1438846 -0.1409534 -5.2081304 0.0000002 0.1201571 0.0003734 81
vertical activity (rearing) Light-Dark Test 111 84 4.2583974 0.1547048 0.1936752 0.1694120 4.0386826 0.2044003 0.1477888 0.1766367 0.2197148 0.2506956 0.3821405 0.0458864 0.2410915 0.8492981 0.6829218 0.7340029 0.1151428 0.3962937 Behaviour vertical activity (rearing) -0.0736758 0.0108025 -0.0948482 -0.0525033 -0.7088644 0.4792640 0.1156558 0.0052083 82
whole arena average speed Open Field 9384 9328 2.1529941 0.1895958 0.0103399 0.0129308 2.0615866 0.1895895 0.0068122 0.0127009 0.0914076 0.0050160 0.0000000 0.0035277 0.0045350 0.4366542 0.1890698 0.1791981 0.0542274 0.9678864 Behaviour whole arena average speed 0.0536242 0.0001069 0.0534147 0.0538338 5.1860235 0.0000002 0.0542807 0.0000535 83
whole arena permanence Open Field 9051 8998 7.0900462 0.0000254 -0.0000047 0.0000080 7.0900572 0.0000254 -0.0000078 0.0000081 -0.0000111 0.0000103 0.2848159 0.0000031 0.0000085 0.7142900 0.0003328 0.0003915 0.0109986 0.6361878 Behaviour whole arena -0.1624324 0.0001108 -0.1626496 -0.1622151 -15.4280162 0.0000000 0.0109990 0.0000554 84
whole arena resting time Open Field 9379 9323 5.7677502 0.2339048 -0.0237320 0.0161198 5.7905890 0.2338878 -0.0384231 0.0158521 -0.0228388 0.0059370 0.0001201 0.0146910 0.0053292 0.0058449 0.2227345 0.2072980 0.0273176 0.9717077 Behaviour whole arena 0.0718228 0.0001070 0.0716132 0.0720325 6.9441625 0.0000000 0.0273244 0.0000535 85
cone b-wave amplitude Electroretinography 109 106 4.7599459 0.0355396 -0.0334524 0.0361318 4.7927587 0.0371480 -0.0382785 0.0352101 -0.0328127 0.0502380 0.5147572 0.0048261 0.0502177 0.9235795 0.1826788 0.2073646 0.1126656 0.3950130 Eye cone b-wave amplitude -0.1268861 0.0095714 -0.1456456 -0.1081265 -1.2969621 0.1960474 0.1131460 0.0047170 86
cone b-wave amplitude-left Electroretinography 2 88 90 4.7366037 0.0627737 -0.0165718 0.0643149 4.7549584 0.0530981 0.0010740 0.0527666 -0.0183547 0.0487613 0.7072435 -0.0176458 0.0501367 0.7254655 0.2341936 0.1656133 0.0352267 0.2741236 Eye cone b-wave amplitude 0.3466279 0.0116295 0.3238346 0.3694213 3.2142778 0.0015558 0.0352413 0.0057143 87
cone b-wave amplitude-right Electroretinography 2 88 90 4.6797350 0.0396465 -0.0160930 0.0400185 4.6943386 0.0406544 -0.0433743 0.0396774 -0.0146037 0.0395297 0.7124283 0.0272814 0.0385176 0.4800876 0.1410758 0.1846999 0.1637512 0.3745252 Eye cone b-wave amplitude -0.2693002 0.0116295 -0.2920935 -0.2465068 -2.4972181 0.0134356 0.1652388 0.0057143 88
cone b-wave implicit time Electroretinography 109 106 3.8078484 0.0115692 0.0016493 0.0112032 3.7996605 0.0099185 -0.0025788 0.0086198 0.0081879 0.0138902 0.5565161 0.0042281 0.0140631 0.7641366 0.0535270 0.0440410 0.0742520 0.6683812 Eye cone b-wave implicit time 0.1949281 0.0095714 0.1761686 0.2136877 1.9924524 0.0475982 0.0743889 0.0047170 89
cone b-wave implicit time-left Electroretinography 2 88 90 3.6994092 0.0095085 0.0077061 0.0094943 3.6888561 0.0080919 -0.0100385 0.0078725 0.0105531 0.0077776 0.1772711 0.0177446 0.0074861 0.0193013 0.0332622 0.0252082 0.2459276 0.5294324 Eye cone b-wave implicit time 0.2773872 0.0116295 0.2545939 0.3001806 2.5722093 0.0109306 0.2510736 0.0057143 90
cone b-wave implicit time-right Electroretinography 2 88 90 3.7011509 0.0088203 0.0082119 0.0087594 3.6799317 0.0077265 -0.0049738 0.0074764 0.0212191 0.0074991 0.0054326 0.0131857 0.0071342 0.0669334 0.0304230 0.0262671 0.2935941 0.5841045 Eye cone b-wave implicit time 0.1470169 0.0116295 0.1242235 0.1698103 1.3632866 0.1745336 0.3024948 0.0057143 91
eye size Electroretinography 109 106 1.1717768 0.0083331 0.0057816 0.0080876 1.1857920 0.0065100 -0.0058223 0.0055514 -0.0140153 0.0095971 0.1464807 0.0116040 0.0097753 0.2372522 0.0392531 0.0271982 0.1768871 0.6729457 Eye eye size 0.3667432 0.0095714 0.3479837 0.3855027 3.7486546 0.0002290 0.1787674 0.0047170 92
eye size-left Electroretinography 2 88 90 1.1741130 0.0048771 0.0048224 0.0049236 1.1804754 0.0043205 -0.0001414 0.0042380 -0.0063624 0.0041387 0.1267475 0.0049638 0.0040616 0.2239613 0.0174252 0.0153890 0.2838146 0.4725799 Eye eye size 0.1244045 0.0116295 0.1016112 0.1471979 1.1536020 0.2502275 0.2918260 0.0057143 93
eye size-right Electroretinography 2 88 90 1.1728326 0.0033952 0.0041316 0.0034762 1.1787821 0.0033374 -0.0020137 0.0032878 -0.0059495 0.0031433 0.0607068 0.0061454 0.0031668 0.0545592 0.0126370 0.0143716 0.2898198 0.4129712 Eye eye size -0.1284857 0.0116295 -0.1512791 -0.1056923 -1.1914467 0.2350825 0.2983695 0.0057143 94
interpupillary distance Electroretinography 197 196 2.4380565 0.0089435 0.0024424 0.0029902 2.4483882 0.0087773 0.0046893 0.0022936 -0.0103317 0.0037524 0.0063065 -0.0022469 0.0036397 0.5375388 0.0220403 0.0202830 0.3114381 0.6114450 Eye interpupillary distance 0.0830740 0.0051680 0.0729449 0.0932031 1.1555914 0.2485540 0.3221372 0.0025641 95
left anterior chamber depth Eye Morphology 76 77 5.9362887 0.0167139 0.0427650 0.0172484 5.9306787 0.0133149 0.0070548 0.0129697 0.0056100 0.0144287 0.6988932 0.0357101 0.0148868 0.0198049 0.0506303 0.0341372 0.3794858 0.6994703 Eye left anterior chamber depth 0.3942562 0.0136061 0.3675888 0.4209236 3.3799647 0.0009228 0.3994588 0.0066667 96
left corneal thickness Eye Morphology 76 77 4.6367513 0.0319422 0.0305948 0.0330263 4.5912138 0.0242986 0.0123541 0.0238761 0.0455376 0.0258417 0.0834972 0.0182407 0.0269657 0.5015464 0.0993737 0.0497623 0.1212388 0.4994023 Eye corneal thickness 0.6917224 0.0136061 0.6650550 0.7183898 5.9301472 0.0000000 0.1218381 0.0066667 97
left inner nuclear layer Eye Morphology 75 77 3.1922875 0.0402708 0.0343779 0.0410180 3.1566302 0.0389161 0.0008290 0.0384609 0.0356572 0.0297611 0.2359192 0.0335489 0.0300860 0.2695700 0.0930703 0.1092257 0.1081321 0.5139294 Eye inner nuclear layer -0.1598729 0.0137012 -0.1867267 -0.1330190 -1.3658264 0.1740379 0.1085566 0.0067114 98
left outer nuclear layer Eye Morphology 75 77 3.7553480 0.0395318 -0.0411443 0.0278511 3.7784736 0.0362162 0.0142664 0.0213474 -0.0231256 0.0264552 0.3857743 -0.0554107 0.0265711 0.0416052 0.0580967 0.0493776 0.0566948 0.9830572 Eye outer nuclear layer 0.1627997 0.0137012 0.1359458 0.1896535 1.3908306 0.1663366 0.0567557 0.0067114 99
left posterior chamber depth Eye Morphology 75 77 6.2963967 0.0084387 0.0017446 0.0083949 6.2932614 0.0061141 0.0000011 0.0051876 0.0031353 0.0083860 0.7099088 0.0017435 0.0085919 0.8399331 0.0244016 0.0145372 0.0275267 0.8827247 Eye posterior chamber depth 0.5181289 0.0137012 0.4912751 0.5449828 4.4264800 0.0000183 0.0275336 0.0067114 100
left total retinal thickness Eye Morphology 1222 1261 5.4677120 0.0418067 0.0032828 0.0021769 5.4681947 0.0417835 -0.0004130 0.0013827 -0.0004826 0.0022441 0.8297284 0.0036959 0.0022416 0.0993424 0.0403134 0.0259756 0.0237385 0.9120030 Eye total retinal thickness 0.4395374 0.0008076 0.4379545 0.4411203 15.4664265 0.0000000 0.0237430 0.0004032 101
max left eye lens density Eye Morphology 907 942 2.1723083 0.0195221 0.0160386 0.0169214 2.1269957 0.0181120 0.0293343 0.0143852 0.0453126 0.0150057 0.0025695 -0.0132958 0.0146144 0.3630765 0.2068967 0.1819754 0.0776843 0.6307797 Eye max eye lens density 0.1283686 0.0010856 0.1262409 0.1304963 3.8960820 0.0001012 0.0778411 0.0005417 102
max right eye lens density Eye Morphology 896 940 2.2002966 0.0206834 0.0155218 0.0179629 2.1629733 0.0192492 0.0327781 0.0154246 0.0373234 0.0158948 0.0189867 -0.0172563 0.0154358 0.2637597 0.2161152 0.1947696 0.0758212 0.6280352 Eye max eye lens density 0.1040205 0.0010935 0.1018772 0.1061638 3.1456027 0.0016840 0.0759670 0.0005456 103
mean left eye lens density Eye Morphology 907 942 1.8604779 0.0139891 0.0165643 0.0114109 1.8361623 0.0132860 0.0283749 0.0099690 0.0243155 0.0101023 0.0161971 -0.0118107 0.0097594 0.2263820 0.1348207 0.1259803 0.0989529 0.6982171 Eye mean eye lens density 0.0678410 0.0010856 0.0657133 0.0699687 2.0590251 0.0396318 0.0992778 0.0005417 104
mean right eye lens density Eye Morphology 896 940 1.9109776 0.0144222 0.0202038 0.0111655 1.8805606 0.0139062 0.0291081 0.0099984 0.0304170 0.0098524 0.0020543 -0.0089043 0.0094439 0.3458903 0.1269518 0.1260334 0.1001870 0.7412178 Eye mean eye lens density 0.0072869 0.0010935 0.0051436 0.0094302 0.2203577 0.8256171 0.1005243 0.0005456 105
min left eye lens density Eye Morphology 907 942 1.5802401 0.0099558 0.0041729 0.0087144 1.5672765 0.0093724 0.0139052 0.0076113 0.0129636 0.0076717 0.0912598 -0.0097323 0.0074406 0.1910599 0.1032527 0.0966649 0.0639918 0.6167108 Eye min eye lens density 0.0659495 0.0010856 0.0638218 0.0680772 2.0016178 0.0454719 0.0640793 0.0005417 106
min right eye lens density Eye Morphology 896 940 1.6255900 0.0104945 0.0033711 0.0088919 1.6202055 0.0098897 0.0117267 0.0077541 0.0053845 0.0078564 0.4932075 -0.0083556 0.0075971 0.2715669 0.1049264 0.0978915 0.0550421 0.6550367 Eye min eye lens density 0.0694252 0.0010935 0.0672819 0.0715685 2.0994342 0.0359150 0.0550978 0.0005456 107
right anterior chamber depth Eye Morphology 74 76 5.8864041 0.0939958 0.0454571 0.0972134 5.9088171 0.0662430 0.0008085 0.0663662 -0.0224129 0.0678973 0.7425780 0.0446486 0.0720437 0.5379860 0.3012121 0.0445532 0.1516148 0.3280283 Eye anterior chamber depth 1.9113246 0.0138916 1.8840976 1.9385515 16.2165624 0.0000000 0.1527928 0.0068027 108
right corneal thickness Eye Morphology 75 76 4.5934362 0.0326966 0.0106308 0.0332640 4.6229852 0.0514984 -0.0050191 0.0490023 -0.0295490 0.0543116 0.5885568 0.0156499 0.0526657 0.7674471 0.0853730 0.2640478 0.0876635 0.4151909 Eye corneal thickness -1.1290047 0.0137938 -1.1560399 -1.1019694 -9.6128997 0.0000000 0.0878891 0.0067568 109
right inner nuclear layer Eye Morphology 71 75 3.1851590 0.0415651 0.0029792 0.0424356 3.1515566 0.0344353 -0.0122462 0.0338940 0.0336024 0.0347926 0.3385340 0.0152255 0.0354062 0.6689228 0.1165745 0.0924917 0.1657853 0.6499986 Eye inner nuclear layer 0.2318196 0.0142974 0.2037973 0.2598420 1.9387502 0.0544875 0.1673297 0.0069930 110
right outer nuclear layer Eye Morphology 71 75 3.8366987 0.0411854 0.0276416 0.0308456 3.7885439 0.0386538 0.0133542 0.0272513 0.0481548 0.0289330 0.1019438 0.0142874 0.0279916 0.6118796 0.0501008 0.0647724 0.0513844 0.9781193 Eye outer nuclear layer -0.2564333 0.0142974 -0.2844557 -0.2284110 -2.1445994 0.0336631 0.0514297 0.0069930 111
right posterior chamber depth Eye Morphology 72 75 6.2887208 0.0093485 -0.0058608 0.0094794 6.2965541 0.0079585 -0.0061995 0.0076191 -0.0078333 0.0091458 0.3955823 0.0003387 0.0091468 0.9706022 0.0252662 0.0250891 0.1105265 0.6829920 Eye posterior chamber depth 0.0073356 0.0141908 -0.0204779 0.0351491 0.0615787 0.9509831 0.1109799 0.0069444 112
right total retinal thickness Eye Morphology 1200 1250 5.4714816 0.0404829 0.0041696 0.0031973 5.4719824 0.0404699 0.0023537 0.0028777 -0.0005008 0.0021789 0.8182406 0.0018159 0.0021483 0.3980491 0.0359944 0.0296496 0.0435983 0.9101588 Eye total retinal thickness 0.1939311 0.0008187 0.1923265 0.1955356 6.7778525 0.0000000 0.0436259 0.0004087 113
rod a-wave amplitude Electroretinography 108 106 5.0316103 0.0635232 0.0365486 0.0633114 4.4660092 0.0950339 0.2269419 0.0905291 0.5656011 0.1114432 0.0000012 -0.1903933 0.1098954 0.0854524 0.3040800 0.5446975 0.3909238 0.5887973 Eye rod a-wave amplitude -0.5830322 0.0096163 -0.6018798 -0.5641847 -5.9455105 0.0000000 0.4128900 0.0047393 114
rod a-wave amplitude-left Electroretinography 2 88 89 4.2115201 0.2197574 -0.2503910 0.2246210 4.4483797 0.1697711 0.0267613 0.1692579 -0.2368596 0.1545518 0.1279322 -0.2771523 0.1592117 0.0842030 0.8100048 0.2819804 0.1829123 0.3245975 Eye rod a-wave amplitude 1.0552711 0.0116963 1.0323468 1.0781954 9.7575250 0.0000000 0.1849941 0.0057471 115
rod a-wave amplitude-right Electroretinography 2 88 88 4.4223108 0.0812767 -0.0513003 0.0832136 4.4022328 0.0824088 0.0191339 0.0807012 0.0200780 0.0777864 0.7967475 -0.0704341 0.0775770 0.3656928 0.2998582 0.3616463 0.0905466 0.3260973 Eye rod a-wave amplitude -0.1873569 0.0117647 -0.2104153 -0.1642985 -1.7273453 0.0858801 0.0907953 0.0057803 116
rod a-wave implicit time Electroretinography 109 106 2.8795026 0.0125133 0.0080846 0.0128616 2.8111922 0.0106098 -0.0021799 0.0101187 0.0683103 0.0161773 0.0000437 0.0102644 0.0163118 0.5302232 0.0671268 0.0600533 0.4326568 0.5087558 Eye rod a-wave implicit time 0.1112130 0.0095714 0.0924535 0.1299725 1.1367604 0.2569157 0.4631608 0.0047170 117
rod a-wave implicit time-left Electroretinography 2 86 90 3.0855511 0.0147375 -0.0072252 0.0148605 3.0445857 0.0130836 -0.0123394 0.0128745 0.0409654 0.0126217 0.0015098 0.0051142 0.0124516 0.6819858 0.0521901 0.0478881 0.4656808 0.5839650 Eye rod a-wave implicit time 0.0863021 0.0117712 0.0632309 0.1093732 0.7954453 0.4274383 0.5045408 0.0057803 118
rod a-wave implicit time-right Electroretinography 2 87 90 3.0956373 0.0142091 0.0005169 0.0144123 3.0442629 0.0131628 -0.0090702 0.0129672 0.0513744 0.0125462 0.0000756 0.0095872 0.0124630 0.4432072 0.0514602 0.0520203 0.4682790 0.5622055 Eye rod a-wave implicit time -0.0106195 0.0116995 -0.0335501 0.0123111 -0.0981794 0.9219022 0.5078637 0.0057471 119
rod b-wave amplitude Electroretinography 109 106 5.9925366 0.0431116 -0.0410973 0.0422167 6.2019449 0.0447824 -0.0443906 0.0407486 -0.2094083 0.0582961 0.0004561 0.0032933 0.0582687 0.9550110 0.1992254 0.2260429 0.2762841 0.6140759 Eye rod b-wave amplitude -0.1264254 0.0095714 -0.1451849 -0.1076659 -1.2922531 0.1976697 0.2836545 0.0047170 120
rod b-wave amplitude-left Electroretinography 2 88 90 6.0043538 0.0639126 -0.0346755 0.0645223 6.0924437 0.0542428 -0.0239224 0.0532974 -0.0880899 0.0515869 0.0901926 -0.0107531 0.0508002 0.8327056 0.2288448 0.1700985 0.1262252 0.4502565 Eye rod b-wave amplitude 0.2968014 0.0116295 0.2740081 0.3195948 2.7522370 0.0065392 0.1269020 0.0057143 121
rod b-wave amplitude-right Electroretinography 2 88 90 5.9927945 0.0416643 -0.0460836 0.0426873 6.0828954 0.0398053 -0.0464908 0.0392827 -0.0901009 0.0372808 0.0171013 0.0004072 0.0377348 0.9914069 0.1554400 0.1644146 0.1885856 0.3269960 Eye rod b-wave amplitude -0.0559960 0.0116295 -0.0787894 -0.0332026 -0.5192505 0.6042384 0.1908702 0.0057143 122
rod b-wave implicit time Electroretinography 109 106 3.8152662 0.0142385 -0.0113621 0.0135633 3.8134123 0.0129348 -0.0162566 0.0111172 0.0018538 0.0172715 0.9146796 0.0048945 0.0174332 0.7793213 0.0634114 0.0571168 0.1778487 0.6874958 Eye rod b-wave implicit time 0.1044079 0.0095714 0.0856484 0.1231674 1.0672020 0.2870887 0.1797602 0.0047170 123
rod b-wave implicit time-left Electroretinography 2 87 90 3.9524501 0.0119035 0.0031417 0.0120683 3.9269220 0.0106905 -0.0082112 0.0105418 0.0255281 0.0101618 0.0132835 0.0113530 0.0101041 0.2633556 0.0430703 0.0396997 0.3258317 0.4747225 Eye rod b-wave implicit time 0.0816967 0.0116995 0.0587660 0.1046273 0.7553018 0.4510833 0.3381577 0.0057471 124
rod b-wave implicit time-right Electroretinography 2 87 90 3.9272396 0.0184100 -0.0192718 0.0188061 3.9233360 0.0156628 -0.0046673 0.0155620 0.0039036 0.0144788 0.7879083 -0.0146045 0.0147895 0.3253259 0.0681811 0.0502322 0.2144275 0.3710464 Eye rod b-wave implicit time 0.3057152 0.0116995 0.2827846 0.3286458 2.8263975 0.0052555 0.2178077 0.0057471 125
% pre-pulse inhibition - global Acoustic Startle and Pre-pulse Inhibition (PPI) 8612 8634 5.2746035 0.0147235 -0.0050482 0.0023240 5.2797968 0.0147023 -0.0030177 0.0020362 -0.0051933 0.0025181 0.0391914 -0.0020304 0.0023253 0.3825750 0.0986343 0.0899158 0.0238926 0.5791338 Hearing pre-pulse inhibition 0.0925453 0.0001160 0.0923179 0.0927727 8.5922667 0.0000000 0.0238971 0.0000580 126
% pre-pulse inhibition - ppi1 Acoustic Startle and Pre-pulse Inhibition (PPI) 8611 8635 5.9211633 0.0105150 -0.0019376 0.0015849 5.9193827 0.0105328 -0.0010930 0.0016148 0.0017807 0.0018762 0.3425850 -0.0008446 0.0017398 0.6273647 0.0652632 0.0792810 0.0262880 0.5394703 Hearing pre-pulse inhibition -0.1945705 0.0001160 -0.1947978 -0.1943431 -18.0646728 0.0000000 0.0262940 0.0000580 127
% pre-pulse inhibition - ppi2 Acoustic Startle and Pre-pulse Inhibition (PPI) 8612 8634 5.5359225 0.0101861 -0.0026330 0.0020022 5.5373937 0.0101774 -0.0030368 0.0018539 -0.0014712 0.0022186 0.5072641 0.0004038 0.0020496 0.8438083 0.0830383 0.0844297 0.0244452 0.4997802 Hearing pre-pulse inhibition -0.0166173 0.0001160 -0.0168447 -0.0163900 -1.5428182 0.1228932 0.0244501 0.0000580 128
% pre-pulse inhibition - ppi3 Acoustic Startle and Pre-pulse Inhibition (PPI) 8611 8635 5.6759369 0.0083945 -0.0034787 0.0014451 5.6813949 0.0083919 -0.0021663 0.0013454 -0.0054581 0.0015996 0.0006464 -0.0013124 0.0014780 0.3745948 0.0596705 0.0609997 0.0290932 0.5399940 Hearing pre-pulse inhibition -0.0220321 0.0001160 -0.0222595 -0.0218048 -2.0455498 0.0408158 0.0291014 0.0000580 129
% pre-pulse inhibition - ppi4 Acoustic Startle and Pre-pulse Inhibition (PPI) 4200 4252 4.9868007 0.0196753 -0.0044345 0.0039307 5.0031103 0.0196049 -0.0029153 0.0035504 -0.0163096 0.0042898 0.0001447 -0.0015192 0.0038964 0.6966292 0.1158990 0.1075925 0.0457119 0.5379375 Hearing pre-pulse inhibition 0.0743695 0.0002368 0.0739054 0.0748336 4.8327819 0.0000014 0.0457437 0.0001184 130
12khz-evoked abr threshold Auditory Brain Stem Response 3560 3763 3.4984420 0.1058937 0.0010173 0.0073150 3.4906718 0.1059313 0.0099774 0.0072656 0.0077702 0.0085703 0.3646345 -0.0089601 0.0073870 0.2252051 0.1932256 0.2242375 0.0105786 0.9129282 Hearing abr threshold -0.1488396 0.0002735 -0.1493757 -0.1483034 -8.9991752 0.0000000 0.0105790 0.0001366 131
18khz-evoked abr threshold Auditory Brain Stem Response 3561 3758 3.4343386 0.0807563 0.0029793 0.0079950 3.3965810 0.0808096 0.0102952 0.0080092 0.0377576 0.0084836 0.0000087 -0.0073159 0.0074978 0.3292377 0.1932622 0.2263483 0.0373828 0.8653808 Hearing abr threshold -0.1580195 0.0002737 -0.1585559 -0.1574831 -9.5518113 0.0000000 0.0374002 0.0001367 132
24khz-evoked abr threshold Auditory Brain Stem Response 3539 3751 3.5630273 0.0527809 -0.0099366 0.0125223 3.5192374 0.0528506 0.0082645 0.0123710 0.0437899 0.0089077 0.0000009 -0.0182011 0.0084293 0.0308754 0.2085047 0.2361251 0.0705692 0.7555782 Hearing abr threshold -0.1243921 0.0002748 -0.1249307 -0.1238535 -7.5037555 0.0000000 0.0706867 0.0001372 133
30khz-evoked abr threshold Auditory Brain Stem Response 3391 3648 3.9084952 0.0448776 -0.0113944 0.0109235 3.8521336 0.0449399 0.0001886 0.0105845 0.0563617 0.0098000 0.0000000 -0.0115826 0.0090314 0.1997352 0.2362465 0.2481254 0.0984544 0.6843921 Hearing abr threshold -0.0490479 0.0002848 -0.0496060 -0.0484898 -2.9066005 0.0036652 0.0987743 0.0001421 134
6khz-evoked abr threshold Auditory Brain Stem Response 3556 3764 3.8513077 0.0841968 -0.0105297 0.0055534 3.8672297 0.0842177 -0.0013144 0.0054866 -0.0159220 0.0058460 0.0064795 -0.0092152 0.0051348 0.0727663 0.1266588 0.1487595 0.0172438 0.9395629 Hearing abr threshold -0.1608265 0.0002737 -0.1613629 -0.1602901 -9.7217470 0.0000000 0.0172456 0.0001367 135
click-evoked abr threshold Auditory Brain Stem Response 2158 2367 3.1105165 0.1356064 -0.0069876 0.0083696 3.1046310 0.1356127 -0.0137656 0.0083191 0.0058856 0.0083359 0.4802111 0.0067781 0.0079132 0.3917605 0.1450208 0.1564655 0.0278366 0.9479668 Hearing abr threshold -0.0759380 0.0004435 -0.0768073 -0.0750687 -3.6057878 0.0003146 0.0278438 0.0002211 136
response amplitude - bn Acoustic Startle and Pre-pulse Inhibition (PPI) 8690 8697 2.2831095 0.4471997 0.0712339 0.0193053 2.2773061 0.4471699 0.0880121 0.0176547 0.0058035 0.0162208 0.7205141 -0.0167782 0.0153841 0.2754578 0.6551651 0.5929821 0.0400444 0.9474249 Hearing response amplitude 0.0997232 0.0001151 0.0994976 0.0999487 9.2964762 0.0000000 0.0400658 0.0000575 137
response amplitude - pp1 Acoustic Startle and Pre-pulse Inhibition (PPI) 8690 8697 2.3045061 0.4445194 0.0994603 0.0238462 2.2658869 0.4444666 0.1045565 0.0217082 0.0386192 0.0188834 0.0408589 -0.0050962 0.0178430 0.7751805 0.7643376 0.6574091 0.0456946 0.9324418 Hearing response amplitude 0.1507032 0.0001151 0.1504777 0.1509287 14.0489807 0.0000000 0.0457264 0.0000575 138
response amplitude - pp1_s Acoustic Startle and Pre-pulse Inhibition (PPI) 8616 8635 4.6783959 0.5102334 0.0828131 0.0240880 4.8923588 0.5102230 0.0817718 0.0232686 -0.2139629 0.0155776 0.0000000 0.0010412 0.0143769 0.9422652 0.5659783 0.5541509 0.0800714 0.9670992 Hearing response amplitude 0.0211187 0.0001160 0.0208914 0.0213460 1.9610296 0.0498916 0.0802432 0.0000580 139
response amplitude - pp2 Acoustic Startle and Pre-pulse Inhibition (PPI) 8690 8697 2.6231830 0.4848738 0.0638120 0.0136392 2.5797054 0.4848764 0.0700607 0.0132321 0.0434776 0.0108775 0.0000645 -0.0062487 0.0101181 0.5368624 0.3836286 0.4144021 0.0261436 0.9808115 Hearing response amplitude -0.0771620 0.0001151 -0.0773875 -0.0769365 -7.1932604 0.0000000 0.0261496 0.0000575 140
response amplitude - pp2_s Acoustic Startle and Pre-pulse Inhibition (PPI) 8616 8635 4.2181847 0.5120598 0.0870921 0.0247218 4.4163525 0.5120489 0.0883831 0.0236893 -0.1981678 0.0172900 0.0000000 -0.0012910 0.0159826 0.9356232 0.6264944 0.6146387 0.0784389 0.9599208 Hearing response amplitude 0.0191054 0.0001160 0.0188781 0.0193327 1.7740762 0.0760682 0.0786004 0.0000580 141
response amplitude - pp3 Acoustic Startle and Pre-pulse Inhibition (PPI) 8690 8697 2.8506887 0.5065468 0.0373036 0.0160473 2.8342722 0.5065473 0.0635162 0.0155317 0.0164165 0.0117663 0.1629707 -0.0262126 0.0109056 0.0162475 0.4155243 0.4366571 0.0215713 0.9798751 Hearing response amplitude -0.0496069 0.0001151 -0.0498324 -0.0493813 -4.6244930 0.0000038 0.0215747 0.0000575 142
response amplitude - pp3_s Acoustic Startle and Pre-pulse Inhibition (PPI) 8616 8635 3.9181293 0.5222213 0.0974323 0.0205029 4.0709459 0.5222138 0.0900160 0.0194237 -0.1528166 0.0172995 0.0000000 0.0074163 0.0159790 0.6425644 0.6240315 0.6272934 0.0696570 0.9612607 Hearing response amplitude -0.0052135 0.0001160 -0.0054408 -0.0049862 -0.4841121 0.6283125 0.0697700 0.0000580 143
response amplitude - pp4 Acoustic Startle and Pre-pulse Inhibition (PPI) 4200 4253 2.5348942 0.8114546 -0.0040156 0.0191722 2.5640064 0.8114471 0.0091987 0.0189956 -0.0291121 0.0153503 0.0579317 -0.0132143 0.0142102 0.3524420 0.3728196 0.4077612 0.0063670 0.9895838 Hearing response amplitude -0.0895855 0.0002368 -0.0900496 -0.0891214 -5.8219082 0.0000000 0.0063671 0.0001183 144
response amplitude - pp4_s Acoustic Startle and Pre-pulse Inhibition (PPI) 4200 4253 3.1334002 0.8048000 0.0718255 0.0337455 3.3058207 0.8047808 0.0623291 0.0332733 -0.1724205 0.0215578 0.0000000 0.0094964 0.0203507 0.6407745 0.5242427 0.5560285 0.0517307 0.9803904 Hearing response amplitude -0.0588633 0.0002368 -0.0593274 -0.0583992 -3.8253583 0.0001315 0.0517769 0.0001183 145
response amplitude - s Acoustic Startle and Pre-pulse Inhibition (PPI) 8619 8637 4.9782721 0.4964215 0.0679687 0.0202102 5.1946617 0.4964060 0.0711068 0.0191925 -0.2163896 0.0141892 0.0000000 -0.0031382 0.0131618 0.8115497 0.5302697 0.4947192 0.0779023 0.9707077 Hearing response amplitude 0.0693955 0.0001159 0.0691682 0.0696227 6.4448159 0.0000000 0.0780604 0.0000580 146
aortic diameter (dao) Echo 1266 1225 0.2325750 0.0034406 0.0305897 0.0051025 0.2278177 0.0033872 0.0384653 0.0048528 0.0047572 0.0042814 0.2666334 -0.0078756 0.0041145 0.0557427 0.0603292 0.0638261 0.4390952 0.5731112 Heart aortic diameter (dao) -0.0563587 0.0008050 -0.0579366 -0.0547808 -1.9863242 0.0471068 0.4711093 0.0004019 147
cardiac output Echo 2963 1965 2.7693275 0.0722969 0.0782671 0.0093506 2.7387835 0.0725407 0.0765211 0.0097353 0.0305440 0.0111758 0.0063025 0.0017461 0.0096846 0.8569299 0.2034888 0.2120790 0.2449642 0.6555222 Heart cardiac output -0.0414340 0.0004238 -0.0422646 -0.0406034 -2.0127802 0.0441921 0.2500485 0.0002030 148
cv Electrocardiogram (ECG) 4301 4295 0.6568179 0.2060366 -0.0248413 0.0423704 0.3525507 0.2063758 0.0322804 0.0390823 0.3042672 0.0283197 0.0000000 -0.0571217 0.0264667 0.0309404 0.7611737 0.7676703 0.1527483 0.6338991 Heart cv -0.0084989 0.0002328 -0.0089553 -0.0080426 -0.5569881 0.5775500 0.1539532 0.0001164 149
ejection fraction Echo 3128 2139 4.1162139 0.1720701 -0.0065697 0.0052377 4.1102819 0.1720903 -0.0146319 0.0049765 0.0059321 0.0062245 0.3406327 0.0080622 0.0054843 0.1416172 0.1272400 0.1111662 0.0406571 0.9314174 Heart ejection fraction 0.1349746 0.0003941 0.1342022 0.1357470 6.7992097 0.0000000 0.0406795 0.0001900 150
end-diastolic diameter Echo 1558 563 1.4039107 0.0130530 0.0276104 0.0052679 1.3976736 0.0141218 0.0379727 0.0063868 0.0062371 0.0067325 0.3543599 -0.0103623 0.0046767 0.0268443 0.0525365 0.0718276 0.4135463 0.6326958 Heart end-diastolic diameter -0.3133332 0.0012144 -0.3157134 -0.3109530 -8.9913619 0.0000000 0.4398815 0.0004721 151
end-systolic diameter Echo 1558 563 1.0969226 0.0476913 0.0277740 0.0073441 1.0944722 0.0486197 0.0460272 0.0096593 0.0024504 0.0119432 0.8374637 -0.0182531 0.0084606 0.0311120 0.0994403 0.1271815 0.2546421 0.6666901 Heart end-systolic diameter -0.2466294 0.0012144 -0.2490096 -0.2442492 -7.0772385 0.0000000 0.2603705 0.0004721 152
fractional shortening Echo 3151 2163 3.5119504 0.2464776 -0.0117209 0.0058295 3.5076257 0.2465062 -0.0194246 0.0055980 0.0043247 0.0084055 0.6069237 0.0077037 0.0073360 0.2937159 0.1690823 0.1565112 0.0374655 0.9354674 Heart fractional shortening 0.0771852 0.0003903 0.0764202 0.0779502 3.9068578 0.0000947 0.0374830 0.0001883 153
heart weight Heart Weight 9886 9813 4.8138798 0.0292507 0.0798139 0.0073469 4.8688653 0.0292609 0.1026247 0.0073971 -0.0549855 0.0028201 0.0000000 -0.0228107 0.0026096 0.0000000 0.1115926 0.1241589 0.5407043 0.8247245 Heart heart weight -0.1067079 0.0001016 -0.1069070 -0.1065089 -10.5885034 0.0000000 0.6051504 0.0000508 154
heart weight normalised against body weight Heart Weight 7967 7890 1.5458659 0.0317870 -0.0777059 0.0080891 1.5989217 0.0318015 -0.0565438 0.0081371 -0.0530557 0.0031827 0.0000000 -0.0211621 0.0029461 0.0000000 0.1152269 0.1289484 0.2784713 0.7701360 Heart heart weight -0.1125101 0.0001262 -0.1127574 -0.1122628 -10.0161228 0.0000000 0.2860241 0.0000631 155
heart weight normalised against tibia length Heart Weight 139 129 -0.3438548 0.0035320 -0.1097516 0.0035755 -0.3539314 0.0034500 -0.1145397 0.0033713 0.0100766 0.0033263 0.0033734 0.0047881 0.0034046 0.1638057 0.0154228 0.0142236 0.9881755 0.9924102 Heart heart weight 0.0806520 0.0076447 0.0656686 0.0956354 0.9224315 0.3571395 2.5624001 0.0037736 156
hr Echo 9526 8437 6.4157259 0.0890117 0.0001235 0.0022757 6.4224703 0.0890134 0.0030215 0.0021146 -0.0067443 0.0020664 0.0011020 -0.0028980 0.0018935 0.1259233 0.0818650 0.0752685 0.0167981 0.9598735 Heart hr 0.0840034 0.0001118 0.0837843 0.0842225 7.9450834 0.0000000 0.0167996 0.0000557 157
hrv Electrocardiogram (ECG) 3950 3937 2.8101112 0.1897751 -0.0326526 0.0450726 2.5120010 0.1898351 0.0211121 0.0429543 0.2981101 0.0285810 0.0000000 -0.0537648 0.0269571 0.0461413 0.7406416 0.7557051 0.1666197 0.5888710 Heart hrv -0.0201349 0.0002538 -0.0206322 -0.0196375 -1.2639316 0.2062919 0.1681878 0.0001268 158
lvawd Echo 1731 747 -0.2209667 0.0903991 0.0259143 0.0111833 -0.2495192 0.0906234 0.0428903 0.0116620 0.0285525 0.0100208 0.0044278 -0.0169760 0.0075796 0.0252239 0.1174324 0.1131778 0.1477718 0.7749342 Heart lvawd 0.0365204 0.0009614 0.0346361 0.0384047 1.1778354 0.2389754 0.1488617 0.0004040 159
lvaws Echo 1708 723 0.1352815 0.1001515 0.0314588 0.0095686 0.1002235 0.1004100 0.0276395 0.0105200 0.0350580 0.0109849 0.0014388 0.0038193 0.0082712 0.6443068 0.1200125 0.1234788 0.1083762 0.8000757 Heart lvaws -0.0288747 0.0009877 -0.0308106 -0.0269388 -0.9187662 0.3583091 0.1088035 0.0004119 160
lvidd Echo 3150 2163 1.2531180 0.1458367 0.0362950 0.0040624 1.2400574 0.1458636 0.0349979 0.0043865 0.0130606 0.0053176 0.0140845 0.0012971 0.0046501 0.7802994 0.0959225 0.1098988 0.1116903 0.9317424 Heart lvidd -0.1360921 0.0003904 -0.1368572 -0.1353270 -6.8880861 0.0000000 0.1121582 0.0001883 161
lvids Echo 3150 2163 0.8063441 0.2937833 0.0439434 0.0093211 0.7965278 0.2938268 0.0480849 0.0097216 0.0098162 0.0101344 0.3327977 -0.0041414 0.0088462 0.6396948 0.1855115 0.2048199 0.0769188 0.9375978 Heart lvids -0.0990868 0.0003904 -0.0998519 -0.0983217 -5.0151215 0.0000005 0.0770711 0.0001883 162
lvpwd Echo 3150 2163 -0.4186086 0.1084551 0.0189338 0.0099154 -0.4251415 0.1084560 0.0300481 0.0099089 0.0065329 0.0045329 0.1496006 -0.0111142 0.0039139 0.0045369 0.0868471 0.0805154 0.1039365 0.9244021 Heart lvpwd 0.0756281 0.0003904 0.0748630 0.0763932 3.8277952 0.0001308 0.1043132 0.0001883 163
lvpws Echo 3127 2139 -0.2101400 0.2008430 0.0221425 0.0080404 -0.2200992 0.2008408 0.0240808 0.0079096 0.0099592 0.0049887 0.0459610 -0.0019383 0.0043690 0.6573258 0.1008333 0.0849728 0.0533978 0.9667717 Heart lvpws 0.1710639 0.0003941 0.1702914 0.1718364 8.6166147 0.0000000 0.0534487 0.0001900 164
mean r amplitude Electrocardiogram (ECG) 4456 4380 -0.4806964 0.1466258 0.0527562 0.0246810 -0.6699178 0.1468176 0.0802256 0.0234733 0.1892215 0.0215925 0.0000000 -0.0274694 0.0193194 0.1551080 0.5455585 0.5772556 0.0834568 0.7160057 Heart mean r amplitude -0.0564771 0.0002265 -0.0569210 -0.0560331 -3.7525067 0.0001762 0.0836514 0.0001132 165
mean sr amplitude Electrocardiogram (ECG) 3946 3935 -0.2165070 0.1224309 0.0296193 0.0198716 -0.3902844 0.1225519 0.0501523 0.0186127 0.1737774 0.0224782 0.0000000 -0.0205331 0.0195904 0.2946216 0.5257788 0.5665266 0.0865487 0.6896956 Heart mean sr amplitude -0.0746438 0.0002540 -0.0751416 -0.0741461 -4.6838588 0.0000029 0.0867658 0.0001269 166
pnn5(6>ms) Electrocardiogram (ECG) 2978 2907 -1.0907565 0.6195759 -0.0982230 0.1962650 -2.1089457 0.6199069 -0.0079088 0.1802203 1.0181892 0.1271009 0.0000000 -0.0903142 0.1206873 0.4542947 3.0599184 2.7419754 0.1616577 0.5243887 Heart pnn5(6>ms) 0.1097055 0.0003402 0.1090387 0.1103724 5.9474876 0.0000000 0.1630884 0.0001700 167
pq Electrocardiogram (ECG) 3950 3937 3.0043414 0.0277965 -0.0150378 0.0070672 3.0091921 0.0277942 -0.0002364 0.0065732 -0.0048507 0.0052597 0.3564337 -0.0148014 0.0049864 0.0030044 0.1477109 0.1367142 0.0481020 0.3979820 Heart pq 0.0773635 0.0002538 0.0768661 0.0778609 4.8563651 0.0000012 0.0481391 0.0001268 168
pr Electrocardiogram (ECG) 6377 6275 3.4535075 0.0763485 -0.0031197 0.0042296 3.4414141 0.0763534 0.0021404 0.0040027 0.0120934 0.0031421 0.0001194 -0.0052601 0.0028877 0.0685481 0.1091538 0.1046189 0.0305232 0.8697262 Heart pr 0.0424322 0.0001582 0.0421222 0.0427422 3.3739872 0.0007431 0.0305326 0.0000791 169
qrs Electrocardiogram (ECG) 6327 6274 2.3499596 0.0469512 0.0016917 0.0027140 2.3359516 0.0469608 0.0042148 0.0025517 0.0140079 0.0026055 0.0000001 -0.0025231 0.0023918 0.2915029 0.0834786 0.0876232 0.0358666 0.8258386 Heart qrs -0.0484557 0.0001588 -0.0487670 -0.0481445 -3.8452567 0.0001210 0.0358820 0.0000794 170
qtc Electrocardiogram (ECG) 5179 5078 4.1126507 0.1553599 -0.0016851 0.0029902 4.1060021 0.1553653 0.0051122 0.0027795 0.0066486 0.0024943 0.0077007 -0.0067973 0.0021745 0.0017784 0.0668699 0.0673306 0.0085737 0.9857065 Heart qtc -0.0068678 0.0001951 -0.0072502 -0.0064854 -0.4916603 0.6229701 0.0085739 0.0000975 171
qtc dispersion Electrocardiogram (ECG) 4457 4382 2.6410902 0.4847901 -0.0024706 0.0151613 2.6630827 0.4848029 -0.0242374 0.0129869 -0.0219925 0.0159659 0.1684072 0.0217668 0.0151819 0.1516894 0.4864708 0.4537246 0.0116327 0.9022593 Heart qtc dispersion 0.0696845 0.0002264 0.0692407 0.0701284 4.6308414 0.0000037 0.0116332 0.0001132 172
respiration rate Echo 2282 1568 5.0513146 0.3108613 0.0254183 0.0116913 5.0439525 0.3109170 0.0430719 0.0087872 0.0073621 0.0151806 0.6277315 -0.0176537 0.0137439 0.1990729 0.3080600 0.2111328 0.0592816 0.8597573 Heart respiration rate 0.3777072 0.0005389 0.3766510 0.3787634 16.2707642 0.0000000 0.0593512 0.0002599 173
rmssd Electrocardiogram (ECG) 3950 3937 0.3806281 0.1686621 -0.0520266 0.0628873 0.1748007 0.1687249 0.0084693 0.0614650 0.2058274 0.0274561 0.0000000 -0.0604959 0.0254452 0.0174576 0.7102867 0.7247517 0.1388563 0.5699883 Heart rmssd -0.0201608 0.0002538 -0.0206582 -0.0196635 -1.2655631 0.2057069 0.1397592 0.0001268 174
rr Electrocardiogram (ECG) 6377 6275 4.4811695 0.0932204 0.0016066 0.0016594 4.4685810 0.0932218 0.0023273 0.0015249 0.0125886 0.0015313 0.0000000 -0.0007207 0.0014169 0.6110017 0.0516972 0.0505883 0.0217556 0.9759933 Heart rr 0.0216820 0.0001582 0.0213720 0.0219920 1.7240381 0.0847254 0.0217590 0.0000791 175
st Electrocardiogram (ECG) 5499 5491 3.1626430 0.2659844 0.0071010 0.0058709 3.1461556 0.2659861 0.0134272 0.0056415 0.0164874 0.0034814 0.0000022 -0.0063262 0.0030946 0.0409584 0.1005646 0.0986868 0.0138377 0.9850793 Heart st 0.0188487 0.0001821 0.0184919 0.0192056 1.3968419 0.1624893 0.0138385 0.0000910 176
stroke volume Echo 2964 1965 3.4506062 0.1752146 0.0788959 0.0088612 3.4246996 0.1753205 0.0649559 0.0095066 0.0259066 0.0111797 0.0205371 0.0139401 0.0097392 0.1524121 0.1978520 0.2142275 0.1650488 0.8447502 Heart stroke volume -0.0796051 0.0004237 -0.0804356 -0.0787747 -3.8673182 0.0001115 0.1665725 0.0002030 177
basophil cell count Hematology 4440 4413 -3.3640277 0.1637387 0.0161801 0.0160820 -3.2532649 0.1637404 0.0463625 0.0161915 -0.1107629 0.0151898 0.0000000 -0.0301824 0.0137253 0.0279049 0.3918542 0.3930465 0.0991372 0.8784942 Hematology basophil count -0.0030389 0.0002261 -0.0034820 -0.0025959 -0.2021172 0.8398297 0.0994639 0.0001130 178
basophil differential count Hematology 4577 4518 -1.1039558 0.2630235 0.0106698 0.0250449 -1.1167902 0.2629847 0.0209347 0.0245219 0.0128344 0.0271149 0.6359879 -0.0102648 0.0245497 0.6758679 0.7530239 0.7011097 0.0093899 0.8410308 Hematology basophil count 0.0714312 0.0002201 0.0709999 0.0718625 4.8152804 0.0000015 0.0093902 0.0001100 179
eosinophil cell count Hematology 4465 4431 -2.0664095 0.2048268 0.0066811 0.0181203 -1.8596275 0.2048307 0.0041411 0.0182895 -0.2067820 0.0170112 0.0000000 0.0025399 0.0154293 0.8692486 0.4411912 0.4440694 0.1077185 0.8957366 Hematology eosinophils -0.0065034 0.0002250 -0.0069444 -0.0060625 -0.4335854 0.6646000 0.1081380 0.0001124 180
eosinophil differential count Hematology 4618 4555 0.5411424 0.2662663 -0.0211115 0.0198111 0.5647194 0.2662408 -0.0163708 0.0193932 -0.0235769 0.0227221 0.2994789 -0.0047406 0.0203165 0.8155043 0.6191434 0.5814516 0.0102685 0.8866884 Hematology eosinophils 0.0628078 0.0002182 0.0623801 0.0632354 4.2520822 0.0000214 0.0102689 0.0001091 181
eosinophils Immunophenotyping 1050 1048 7.1189602 0.2244071 -0.0197579 0.0353026 7.0751653 0.2243211 0.0149621 0.0362125 0.0437949 0.0318603 0.1694405 -0.0347200 0.0294878 0.2391868 0.3697443 0.4469256 0.0293770 0.8909756 Hematology eosinophils -0.1895815 0.0009560 -0.1914553 -0.1877078 -6.1314287 0.0000000 0.0293855 0.0004773 182
hematocrit Hematology 9685 9560 3.8991583 0.0155434 0.0000010 0.0023885 3.9118801 0.0155480 0.0001432 0.0024291 -0.0127218 0.0014173 0.0000000 -0.0001422 0.0013121 0.9136993 0.0523562 0.0572887 0.0499081 0.9055227 Hematology hematocrit -0.0900330 0.0001040 -0.0902368 -0.0898292 -8.8301649 0.0000000 0.0499496 0.0000520 183
hemoglobin Hematology 9686 9560 2.6820845 0.0125981 -0.0009041 0.0026678 2.6829121 0.0126128 -0.0011795 0.0027588 -0.0008276 0.0013942 0.5527997 0.0002754 0.0012926 0.8312814 0.0456595 0.0620824 0.0023932 0.8825099 Hematology hemoglobin -0.3072526 0.0001040 -0.3074563 -0.3070488 -30.1351759 0.0000000 0.0023932 0.0000520 184
large unstained cell (luc) count Hematology 3288 3286 -3.0144436 0.0805922 0.0080132 0.0196666 -2.7143764 0.0806835 0.0568929 0.0188058 -0.3000672 0.0187495 0.0000000 -0.0488796 0.0170180 0.0040902 0.4103348 0.4120348 0.2831909 0.7480677 Hematology luc -0.0041344 0.0003045 -0.0047313 -0.0035376 -0.2369294 0.8127189 0.2911478 0.0001522 185
large unstained cell (luc) differential count Hematology 3290 3285 -0.2777784 0.0707623 0.0225640 0.0129214 -0.2166073 0.0708436 0.0466265 0.0123587 -0.0611710 0.0142634 0.0000183 -0.0240625 0.0126938 0.0580594 0.3064455 0.3168942 0.1224038 0.7812543 Hematology luc -0.0335284 0.0003045 -0.0341252 -0.0329317 -1.9215333 0.0547077 0.1230207 0.0001522 186
lymphocyte cell count Hematology 4465 4431 1.6289973 0.0501935 0.0176077 0.0139684 1.8458867 0.0501481 0.0096700 0.0138205 -0.2168893 0.0103935 0.0000000 0.0079377 0.0095121 0.4040339 0.2740793 0.2564243 0.2877435 0.7641180 Hematology lymphocytes 0.0665834 0.0002250 0.0661425 0.0670243 4.4391384 0.0000091 0.2961043 0.0001124 187
lymphocyte differential count Hematology 4719 4654 4.4253712 0.0098356 0.0029168 0.0028576 4.4097115 0.0099822 -0.0066337 0.0034221 0.0156598 0.0027483 0.0000000 0.0095505 0.0025419 0.0001730 0.0487460 0.0954445 0.0962743 0.6854130 Hematology lymphocytes -0.6719244 0.0002135 -0.6723429 -0.6715059 -45.9827785 0.0000000 0.0965734 0.0001067 188
mean cell hemoglobin concentration Hematology 9674 9555 3.3888619 0.0104815 0.0001201 0.0006329 3.3770754 0.0104878 -0.0001633 0.0007529 0.0117864 0.0007907 0.0000000 0.0002833 0.0007134 0.6912472 0.0248615 0.0363387 0.0613675 0.9469458 Hematology hemoglobin -0.3795620 0.0001040 -0.3797660 -0.3793581 -37.2108867 0.0000000 0.0614447 0.0000520 189
mean cell volume Hematology 9703 9574 3.8880890 0.0095480 0.0009525 0.0006566 3.8789588 0.0095485 0.0027005 0.0006662 0.0091302 0.0004839 0.0000000 -0.0017480 0.0004463 0.0000900 0.0183403 0.0189921 0.0560727 0.9574028 Hematology mean cell volume -0.0349274 0.0001038 -0.0351308 -0.0347240 -3.4284199 0.0006084 0.0561316 0.0000519 190
mean corpuscular hemoglobin Hematology 9654 9537 2.6779685 0.0083361 0.0011157 0.0006204 2.6571607 0.0083443 0.0023208 0.0007446 0.0208078 0.0008113 0.0000000 -0.0012050 0.0007254 0.0966767 0.0256778 0.0373770 0.1063755 0.9303021 Hematology hemoglobin -0.3754293 0.0001043 -0.3756336 -0.3752249 -36.7693487 0.0000000 0.1067795 0.0000521 191
mean platelet volume Hematology 7512 7457 1.8609900 0.0502340 0.0014642 0.0015943 1.8452387 0.0502342 0.0039025 0.0016607 0.0157513 0.0013286 0.0000000 -0.0024383 0.0012727 0.0553943 0.0450493 0.0453726 0.0251880 0.9828455 Hematology mean platelet volume -0.0071515 0.0001337 -0.0074135 -0.0068895 -0.6185687 0.5362099 0.0251933 0.0000668 192
monocyte cell count Hematology 4467 4431 -2.0625364 0.0848847 0.0762034 0.0202304 -1.9076883 0.0848758 0.0941727 0.0202491 -0.1548480 0.0156854 0.0000000 -0.0179693 0.0143063 0.2091391 0.4046603 0.4013340 0.2409251 0.7631789 Hematology monocytes 0.0082529 0.0002249 0.0078121 0.0086938 0.5502867 0.5821366 0.2457560 0.0001124 193
monocyte differential count Hematology 4720 4654 0.7552199 0.0692551 0.0586611 0.0123153 0.6842846 0.0692486 0.0698053 0.0122374 0.0709353 0.0113272 0.0000000 -0.0111442 0.0102907 0.2788669 0.3010870 0.2924415 0.0996198 0.7760948 Hematology monocytes 0.0291332 0.0002135 0.0287147 0.0295516 1.9938189 0.0462008 0.0999513 0.0001067 194
monocytes Immunophenotyping 1009 1012 7.9560460 0.1377357 -0.0339908 0.0279319 8.0265174 0.1376446 0.1009585 0.0288816 -0.0704714 0.0311211 0.0236789 -0.1349493 0.0284749 0.0000023 0.3588980 0.4270630 0.1057276 0.8496586 Hematology monocytes -0.1738918 0.0009926 -0.1758372 -0.1719464 -5.5195185 0.0000000 0.1061242 0.0004955 195
neutrophil cell count Hematology 4466 4428 -0.4818559 0.0893921 0.0026586 0.0182265 -0.2156183 0.0895317 0.0487407 0.0191860 -0.2662376 0.0139615 0.0000000 -0.0460821 0.0127772 0.0003122 0.3156714 0.3980927 0.2567781 0.8019629 Hematology neutrophils -0.2319840 0.0002250 -0.2324251 -0.2315430 -15.4646886 0.0000000 0.2626560 0.0001125 196
neutrophil differential count Hematology 4655 4610 2.2834609 0.0637993 -0.0129262 0.0159027 2.3268470 0.0639389 0.0336396 0.0166239 -0.0433862 0.0106719 0.0000484 -0.0465658 0.0097764 0.0000019 0.2348289 0.3120059 0.0730831 0.8078654 Hematology neutrophils -0.2841660 0.0002160 -0.2845894 -0.2837426 -19.3345480 0.0000000 0.0732136 0.0001080 197
platelet count Hematology 9637 9528 6.9004534 0.0367664 0.0101107 0.0047427 7.0845484 0.0367832 -0.0051972 0.0048952 -0.1840951 0.0043604 0.0000000 0.0153079 0.0040088 0.0001347 0.1638227 0.1771765 0.2880756 0.8519963 Hematology platelet count -0.0783622 0.0001044 -0.0785668 -0.0781576 -7.6695710 0.0000000 0.2964665 0.0000522 198
red blood cell count Hematology 9689 9572 2.3133984 0.0110677 -0.0010517 0.0026315 2.3353803 0.0110780 -0.0028850 0.0026899 -0.0219819 0.0014174 0.0000000 0.0018333 0.0013142 0.1630394 0.0503148 0.0595021 0.0868856 0.8739074 Hematology red blood cell count -0.1677130 0.0001039 -0.1679166 -0.1675094 -16.4556679 0.0000000 0.0871053 0.0000519 199
red blood cell distribution width Hematology 7553 7496 2.6256197 0.0394497 -0.0050708 0.0023718 2.6449208 0.0394527 0.0037772 0.0024542 -0.0193011 0.0011062 0.0000000 -0.0088480 0.0010620 0.0000000 0.0327936 0.0429444 0.0523797 0.9791211 Hematology red blood cell distribution width -0.2696730 0.0001330 -0.2699336 -0.2694125 -23.3876537 0.0000000 0.0524277 0.0000665 200
white blood cell count Hematology 9368 9229 1.7920073 0.0463897 0.0085835 0.0096538 2.0436528 0.0463849 0.0006568 0.0096310 -0.2516455 0.0064258 0.0000000 0.0079267 0.0059970 0.1862610 0.2582148 0.2455714 0.3146762 0.7889187 Hematology white blood cell count 0.0502032 0.0001076 0.0499924 0.0504141 4.8401177 0.0000013 0.3257272 0.0000538 201
b cell total FACS 293 288 11.9195027 0.0605821 0.0158366 0.0311272 11.7813048 0.0724319 0.0745528 0.0521454 0.1381978 0.0624283 0.0273108 -0.0587162 0.0594978 0.3241990 0.2884615 0.5261263 0.0792306 0.7545951 Immunology B cells -0.6010099 0.0034785 -0.6078277 -0.5941921 -10.1902338 0.0000000 0.0793970 0.0017301 202
b cells Immunophenotyping 751 754 12.2007224 0.1818636 0.0168079 0.0167056 12.2172677 0.1818418 -0.0021696 0.0158855 -0.0165453 0.0223089 0.4584478 0.0189775 0.0189705 0.3173357 0.2281914 0.2651172 0.0255363 0.9140166 Immunology B cells -0.1499848 0.0013342 -0.1525998 -0.1473697 -4.1061247 0.0000424 0.0255419 0.0006658 203
b1 total FACS 293 288 9.0745129 0.0803298 0.0399507 0.0348106 8.7735644 0.0838847 0.0311693 0.0439473 0.3009485 0.0580099 0.0000003 0.0087814 0.0545017 0.8720641 0.3287590 0.4256165 0.1593293 0.8777272 Immunology B cells -0.2582441 0.0034785 -0.2650619 -0.2514263 -4.3785759 0.0000142 0.1606985 0.0017301 204
b1b cells Immunophenotyping 742 745 8.6899643 0.2817741 0.0042648 0.0247713 8.5866744 0.2818838 0.0099933 0.0263301 0.1032899 0.0300973 0.0006203 -0.0057285 0.0268998 0.8313985 0.2713069 0.3802137 0.0450292 0.9499813 Immunology B cells -0.3374803 0.0013504 -0.3401272 -0.3348335 -9.1835396 0.0000000 0.0450597 0.0006739 205
b2 immature + mzb FACS 268 283 9.2331574 0.0768383 0.0474127 0.0307563 9.0973698 0.0846427 0.0530083 0.0506610 0.1357876 0.0603840 0.0249989 -0.0055956 0.0579554 0.9231255 0.2729488 0.5045630 0.0578832 0.8436473 Immunology B cells -0.6143074 0.0036725 -0.6215054 -0.6071094 -10.1368831 0.0000000 0.0579479 0.0018248 206
b2 mature FACS 268 282 11.7330830 0.0680873 0.0231261 0.0393664 11.5948551 0.0789864 0.0843585 0.0598656 0.1382279 0.0728478 0.0583867 -0.0612324 0.0700699 0.3826399 0.3576649 0.5970362 0.0726091 0.7137417 Immunology B cells -0.5122866 0.0036789 -0.5194971 -0.5050760 -8.4460482 0.0000000 0.0727372 0.0018282 207
b2 total FACS 293 288 11.8450512 0.0630988 0.0182796 0.0335993 11.7163353 0.0763613 0.0812073 0.0563408 0.1287159 0.0673955 0.0567374 -0.0629277 0.0642862 0.3281299 0.3118801 0.5693769 0.0710051 0.7375941 Immunology B cells -0.6019540 0.0034785 -0.6087718 -0.5951363 -10.2062414 0.0000000 0.0711248 0.0017301 208
cd24+ cd4 t cells Immunophenotyping 74 77 7.1866296 0.2029629 0.0491390 0.0940238 7.0820674 0.1996845 -0.1113400 0.0849895 0.1045622 0.0887163 0.2408843 0.1604790 0.0839114 0.0581979 0.2826177 0.3101040 0.0948942 0.9554532 Immunology cd4 t -0.0925271 0.0137990 -0.1195727 -0.0654816 -0.7876716 0.4321401 0.0951806 0.0067568 209
cd24+ cd8 t cells Immunophenotyping 74 77 7.3621029 0.1712154 0.0551753 0.0979922 7.2567695 0.1669534 -0.0651071 0.0884711 0.1053334 0.0919906 0.2544691 0.1202824 0.0871579 0.1701367 0.2959759 0.3209977 0.0835543 0.9252060 Immunology cd4 t -0.0808704 0.0137990 -0.1079160 -0.0538248 -0.6884393 0.4922466 0.0837495 0.0067568 210
cd4 cd25- nkt cells Immunophenotyping 546 539 7.2726766 0.3180728 0.0373386 0.0416381 6.9877810 0.3179942 -0.0090359 0.0382880 0.2848955 0.0400531 0.0000000 0.0463745 0.0396973 0.2430452 0.3555452 0.3727937 0.1409976 0.9225609 Immunology cd4 nkt -0.0473849 0.0018536 -0.0510179 -0.0437518 -1.1005917 0.2713190 0.1419433 0.0009242 211
cd4 cd25- t cells Immunophenotyping 686 685 10.4911591 0.1577595 -0.0368807 0.0202570 10.5162463 0.1576881 -0.0120954 0.0201980 -0.0250872 0.0278914 0.3686097 -0.0247854 0.0245623 0.3131608 0.2641842 0.3332383 0.0335867 0.8579162 Immunology cd4 t -0.2322123 0.0014652 -0.2350841 -0.2293406 -6.0664765 0.0000000 0.0335993 0.0007310 212
cd4 cd25+ nkt cells Immunophenotyping 612 608 3.9963736 0.4216493 0.0432723 0.0374484 3.8676080 0.4214523 -0.0003261 0.0340483 0.1287656 0.0428651 0.0027343 0.0435983 0.0408503 0.2861193 0.4214466 0.4117176 0.0399636 0.9488730 Immunology cd4 nkt 0.0233499 0.0016475 0.0201210 0.0265789 0.5752781 0.5652095 0.0399849 0.0008217 213
cd4 cd25+ t cells Immunophenotyping 686 685 8.1363839 0.3275928 0.0066616 0.0306938 8.1977670 0.3275680 -0.0498657 0.0330467 -0.0613832 0.0339258 0.0706771 0.0565273 0.0313744 0.0718713 0.2931131 0.4131594 0.0262555 0.9452919 Immunology cd4 t -0.3432762 0.0014652 -0.3461480 -0.3404045 -8.9679859 0.0000000 0.0262616 0.0007310 214
cd4 cd44-cd62l- t cells Immunophenotyping 447 444 7.6717684 0.5717067 -0.0109977 0.0426998 7.6628628 0.5719739 0.0250349 0.0447309 0.0089057 0.0521044 0.8643374 -0.0360326 0.0500289 0.4716252 0.3907268 0.5231237 0.0122061 0.9465220 Immunology cd4 t -0.2918170 0.0022599 -0.2962463 -0.2873876 -6.1385345 0.0000000 0.0122067 0.0011261 215
cd4 cd44-cd62l+ nkt cells Immunophenotyping 686 685 2.7608844 0.5321785 0.0461638 0.0783062 2.6312707 0.5318860 -0.0548294 0.0788164 0.1296137 0.0465311 0.0054377 0.1009932 0.0448262 0.0244598 0.4504297 0.5100077 0.0483451 0.9516502 Immunology cd4 nkt -0.1242250 0.0014652 -0.1270967 -0.1213532 -3.2453390 0.0012015 0.0483829 0.0007310 216
cd4 cd44+cd62l- nkt cells Immunophenotyping 686 685 6.9858932 0.2947943 0.0402389 0.0378631 6.6704900 0.2944257 -0.0416305 0.0369000 0.3154031 0.0390777 0.0000000 0.0818694 0.0362165 0.0239856 0.3918683 0.4175254 0.1471127 0.9294686 Immunology cd4 nkt -0.0634207 0.0014652 -0.0662924 -0.0605489 -1.6568458 0.0977798 0.1481880 0.0007310 217
cd4 cd44+cd62l- t cells Immunophenotyping 686 685 9.2413889 0.1922286 -0.0288321 0.0216907 9.2421747 0.1921056 -0.0040765 0.0213632 -0.0007858 0.0287738 0.9782169 -0.0247556 0.0254741 0.3313709 0.2757208 0.3347471 0.0263126 0.8922579 Immunology cd4 t -0.1939877 0.0014652 -0.1968595 -0.1911160 -5.0678704 0.0000005 0.0263187 0.0007310 218
cd4 cd44+cd62l+ nkt cells Immunophenotyping 686 685 4.9562198 0.5106608 0.0225485 0.0329072 4.8806873 0.5103895 -0.0104145 0.0298585 0.0755326 0.0361306 0.0368030 0.0329631 0.0332454 0.3216603 0.3890930 0.3579999 0.0253508 0.9632397 Immunology cd4 nkt 0.0832847 0.0014652 0.0804130 0.0861564 2.1757872 0.0297417 0.0253562 0.0007310 219
cd4 cd44+cd62l+ t cells Immunophenotyping 591 594 9.2042174 0.5476362 -0.0456147 0.0313633 9.2607985 0.5474205 -0.0331145 0.0324637 -0.0565811 0.0372453 0.1290669 -0.0125002 0.0339871 0.7131127 0.3272539 0.4112434 0.0235435 0.9592869 Immunology cd4 t -0.2284448 0.0016964 -0.2317696 -0.2251200 -5.5465348 0.0000000 0.0235479 0.0008460 220
cd4 effector FACS 300 298 9.4960930 0.0405401 0.0847897 0.0323331 9.1969895 0.0535390 0.0712907 0.0483947 0.2991035 0.0591897 0.0000006 0.0134990 0.0572860 0.8138062 0.3184624 0.5095519 0.2149775 0.5258580 Immunology cd4 t -0.4700387 0.0033784 -0.4766603 -0.4634171 -8.0868050 0.0000000 0.2183842 0.0016807 221
cd4 nkt cells Immunophenotyping 689 688 7.2734873 0.2481185 0.0280920 0.0349430 7.0066331 0.2477804 -0.0261852 0.0343107 0.2668542 0.0353939 0.0000000 0.0542772 0.0329429 0.0997218 0.3555300 0.3826071 0.1475332 0.9140391 Immunology cd4 nkt -0.0734000 0.0014588 -0.0762592 -0.0705409 -1.9217632 0.0548420 0.1486178 0.0007278 222
cd4 resting/naive FACS 300 298 10.1274429 0.0567784 0.0234214 0.0423463 9.9884423 0.0645893 0.0395497 0.0535887 0.1390005 0.0698693 0.0471931 -0.0161283 0.0668815 0.8095387 0.4159304 0.5479444 0.0869220 0.5941274 Immunology cd4 t -0.2756673 0.0033784 -0.2822889 -0.2690458 -4.7427330 0.0000026 0.0871420 0.0016807 223
cd4 t cells Immunophenotyping 689 688 10.6602656 0.1496242 -0.0282135 0.0199172 10.6889773 0.1495609 -0.0158952 0.0199361 -0.0287117 0.0274906 0.2965250 -0.0123183 0.0242458 0.6115159 0.2616241 0.3308124 0.0285636 0.8437952 Immunology cd4 t -0.2346437 0.0014588 -0.2375029 -0.2317845 -6.1434519 0.0000000 0.0285714 0.0007278 224
cd4 t cells total FACS 300 298 10.8660941 0.0405426 0.0435468 0.0291798 10.6968494 0.0474551 0.0535350 0.0391537 0.1692447 0.0499502 0.0007584 -0.0099882 0.0478284 0.8346613 0.2841590 0.4017522 0.1342687 0.6158130 Immunology cd4 t -0.3463128 0.0033784 -0.3529344 -0.3396913 -5.9581574 0.0000000 0.1350844 0.0016807 225
cd44+ t-regs Immunophenotyping 74 77 6.4142899 0.3464085 0.0788246 0.0972336 6.4432399 0.3446804 -0.0118208 0.0891012 -0.0289500 0.0937990 0.7581318 0.0906454 0.0884255 0.3073760 0.2892269 0.3366369 0.0289092 0.9844958 Immunology cd44+ t-regs -0.1515078 0.0137990 -0.1785534 -0.1244622 -1.2897664 0.1991301 0.0289173 0.0067568 226
cd62l+ t-regs Immunophenotyping 74 77 6.4180336 0.2812496 -0.0902263 0.0986311 6.6497834 0.2784320 -0.1194662 0.0885545 -0.2317497 0.0924034 0.0134764 0.0292399 0.0873990 0.7385442 0.2965012 0.3182877 0.0568762 0.9768146 Immunology cd62l+ t-regs -0.0706192 0.0137990 -0.0976647 -0.0435736 -0.6011718 0.5486391 0.0569376 0.0067568 227
cd8 cd25- nkt cells Immunophenotyping 610 606 6.0536202 0.3553975 0.0044823 0.0383828 6.0625248 0.3552696 0.0171038 0.0370775 -0.0089046 0.0335181 0.7905556 -0.0126215 0.0323768 0.6967488 0.3166204 0.3330137 0.0140354 0.9542404 Immunology cd8 nkt -0.0504856 0.0016529 -0.0537252 -0.0472459 -1.2417739 0.2145598 0.0140363 0.0008244 228
cd8 cd25- t cells Immunophenotyping 612 608 10.3899717 0.1994956 -0.0050572 0.0217009 10.4021797 0.1996328 -0.0147601 0.0227966 -0.0122080 0.0307070 0.6910398 0.0097028 0.0288501 0.7367046 0.2721457 0.3474754 0.0129354 0.8662365 Immunology cd8 t -0.2443617 0.0016475 -0.2475907 -0.2411328 -6.0203976 0.0000000 0.0129361 0.0008217 229
cd8 cd25+ nkt cells Immunophenotyping 610 606 2.1729062 0.3046197 0.0407470 0.0435764 2.2504351 0.3039231 0.0014502 0.0380094 -0.0775290 0.0557826 0.1649015 0.0392968 0.0522954 0.4525741 0.5628468 0.5328868 0.0461671 0.8974238 Immunology cd8 nkt 0.0546930 0.0016529 0.0514533 0.0579326 1.3452617 0.1787919 0.0462000 0.0008244 230
cd8 cd44-cd62l- t cells Immunophenotyping 559 558 7.5011501 0.4656408 -0.0574485 0.0353733 7.5008540 0.4654814 -0.0251022 0.0342215 0.0002962 0.0474389 0.9950198 -0.0323463 0.0420149 0.4415813 0.4137371 0.5057117 0.0315409 0.9423880 Immunology cd8 t -0.2007375 0.0018002 -0.2042658 -0.1972092 -4.7311906 0.0000025 0.0315514 0.0008977 231
cd8 cd44-cd62l+ t cells Immunophenotyping 686 685 9.5796019 0.2737433 -0.0115785 0.0229396 9.5854770 0.2736436 -0.0336611 0.0227065 -0.0058751 0.0312255 0.8507931 0.0220826 0.0273467 0.4195540 0.2889021 0.3655790 0.0246459 0.9395192 Immunology cd8 t -0.2353957 0.0014652 -0.2382674 -0.2325240 -6.1496405 0.0000000 0.0246509 0.0007310 232
cd8 cd44+cd62l- t cells Immunophenotyping 686 685 7.4014758 0.2425725 -0.0093423 0.0288769 7.4230507 0.2423894 0.0031606 0.0290146 -0.0215749 0.0341438 0.5275971 -0.0125029 0.0311337 0.6880684 0.3288252 0.3896972 0.0107405 0.9028877 Immunology cd8 t -0.1698451 0.0014652 -0.1727168 -0.1669733 -4.4371501 0.0000098 0.0107409 0.0007310 233
cd8 cd44+cd62l+ nkt cells Immunophenotyping 684 683 5.5996673 0.3690667 0.0069959 0.0408929 5.6704335 0.3688090 -0.0087357 0.0403072 -0.0707663 0.0343851 0.0398258 0.0157316 0.0325268 0.6287320 0.3475611 0.3595268 0.0297962 0.9556697 Immunology cd8 nkt -0.0338494 0.0014695 -0.0367296 -0.0309693 -0.8830097 0.3773865 0.0298050 0.0007331 234
cd8 cd44+cd62l+ t cells Immunophenotyping 686 685 9.0166448 0.2236296 0.0080339 0.0263078 9.0442687 0.2234967 0.0120188 0.0267102 -0.0276239 0.0304993 0.3652848 -0.0039849 0.0279011 0.8864575 0.2888164 0.3512879 0.0272095 0.9105328 Immunology cd8 t -0.1958162 0.0014652 -0.1986879 -0.1929444 -5.1156379 0.0000004 0.0272162 0.0007310 235
cd8 effector FACS 300 298 7.3494436 0.0562415 0.0414376 0.0371744 7.2093653 0.0645418 0.0806716 0.0502420 0.1400783 0.0640776 0.0292697 -0.0392340 0.0611273 0.5212681 0.3585878 0.5120033 0.0854662 0.6710800 Immunology cd8 t -0.3561690 0.0033784 -0.3627906 -0.3495474 -6.1277278 0.0000000 0.0856752 0.0016807 236
cd8 naive FACS 300 298 10.0540925 0.0716774 0.0182919 0.0523206 9.9016899 0.0828172 0.0549711 0.0683978 0.1524025 0.0880967 0.0842522 -0.0366791 0.0843308 0.6637895 0.5113149 0.7005530 0.0767267 0.5929040 Immunology cd8 t -0.3148958 0.0033784 -0.3215173 -0.3082742 -5.4176404 0.0000001 0.0768778 0.0016807 237
cd8 nkt cells Immunophenotyping 687 686 6.0249622 0.2916676 0.0249798 0.0343304 6.0619909 0.2914318 -0.0059064 0.0339954 -0.0370287 0.0319123 0.2461734 0.0308862 0.0298965 0.3017860 0.3168398 0.3431004 0.0282779 0.9434454 Immunology cd8 nkt -0.0796279 0.0014631 -0.0824954 -0.0767603 -2.0817776 0.0375479 0.0282854 0.0007299 238
cd8 resting FACS 300 298 8.8826975 0.0625542 0.0276100 0.0471208 8.8444276 0.0698202 0.1107339 0.0577272 0.0382699 0.0762553 0.6159813 -0.0831239 0.0729470 0.2550311 0.4644633 0.5884541 0.0881694 0.5863871 Immunology cd8 t -0.2366277 0.0033784 -0.2432493 -0.2300062 -4.0710744 0.0000531 0.0883989 0.0016807 239
cd8 t cells Immunophenotyping 689 688 10.3389092 0.1702640 -0.0123689 0.0206959 10.3517418 0.1701704 -0.0176807 0.0206312 -0.0128326 0.0277525 0.6438924 0.0053118 0.0246210 0.8292291 0.2664379 0.3291365 0.0229523 0.8659405 Immunology cd8 t -0.2113323 0.0014588 -0.2141915 -0.2084731 -5.5331122 0.0000000 0.0229563 0.0007278 240
cd8 t cells total FACS 300 298 10.4662855 0.0426158 0.0228012 0.0314386 10.3136954 0.0565546 0.0739069 0.0496817 0.1525901 0.0599009 0.0111495 -0.0511056 0.0578110 0.3771108 0.3042686 0.5210247 0.1105333 0.5370235 Immunology cd8 t -0.5378979 0.0033784 -0.5445195 -0.5312763 -9.2542928 0.0000000 0.1109868 0.0016807 241
cdc cd11b type FACS 186 180 8.3040000 0.0831624 0.0474707 0.0372063 8.2724483 0.0918030 0.0044393 0.0541508 0.0315517 0.0704500 0.6545685 0.0430314 0.0647859 0.5070511 0.2736622 0.3910511 0.0366946 0.8497994 Immunology cdcs -0.3570364 0.0055571 -0.3679281 -0.3461447 -4.7894809 0.0000024 0.0367111 0.0027548 242
cdc cd8a type FACS 186 180 8.5615593 0.1365981 0.0358264 0.0550459 8.4427076 0.1445240 0.0126751 0.0726609 0.1188517 0.0981574 0.2268868 0.0231513 0.0897576 0.7966313 0.4066400 0.5192869 0.0451303 0.8904096 Immunology cdcs -0.2446209 0.0055571 -0.2555126 -0.2337291 -3.2814773 0.0011325 0.0451610 0.0027548 243
cdcs Immunophenotyping 749 752 8.6981906 0.2495776 0.0019779 0.0212427 8.8725326 0.2496659 -0.0299651 0.0223949 -0.1743420 0.0226132 0.0000000 0.0319430 0.0207186 0.1234013 0.2041053 0.2861119 0.0934454 0.9562889 Immunology cdcs -0.3377444 0.0013378 -0.3403665 -0.3351224 -9.2340648 0.0000000 0.0937188 0.0006676 244
dc total FACS 186 180 9.1767356 0.1062538 0.0395347 0.0421734 9.1005049 0.1140207 0.0053474 0.0593936 0.0762307 0.0783228 0.3311710 0.0341873 0.0717775 0.6342005 0.3101216 0.4265257 0.0381350 0.8854989 Immunology dc total -0.3188007 0.0055571 -0.3296924 -0.3079090 -4.2765663 0.0000243 0.0381535 0.0027548 245
dn cd25- nkt cells Immunophenotyping 607 603 6.3283273 0.5762643 0.0374959 0.0285274 6.1825166 0.5762794 -0.0477058 0.0278680 0.1458107 0.0333572 0.0000137 0.0852018 0.0316993 0.0073183 0.3005611 0.3432163 0.0523718 0.9796501 Immunology dn nkt -0.1327154 0.0016611 -0.1359712 -0.1294596 -3.2562462 0.0011603 0.0524198 0.0008285 246
dn cd25- t cells Immunophenotyping 607 603 8.5860554 0.2870643 0.0153422 0.0242281 8.3638657 0.2872268 -0.0293373 0.0256362 0.2221897 0.0311618 0.0000000 0.0446795 0.0293718 0.1285512 0.2658347 0.3515925 0.1447845 0.9240247 Immunology dn t -0.2796038 0.0016611 -0.2828596 -0.2763480 -6.8602340 0.0000000 0.1458091 0.0008285 247
dn cd25+ nkt cells Immunophenotyping 607 603 2.4169638 0.5301234 -0.0018419 0.0553257 2.3812757 0.5297935 0.0238333 0.0520025 0.0356881 0.0506636 0.4813482 -0.0256751 0.0487802 0.5987726 0.4938287 0.4797155 0.0091589 0.9595471 Immunology dn nkt 0.0289901 0.0016611 0.0257343 0.0322458 0.7112869 0.4770438 0.0091591 0.0008285 248
dn cd25+ t cells Immunophenotyping 607 603 4.6877058 0.5079186 0.0760616 0.0709274 4.6524524 0.5077623 -0.0376220 0.0700610 0.0352534 0.0454670 0.4383192 0.1136836 0.0439639 0.0098625 0.4173996 0.4605239 0.0283588 0.9560776 Immunology dn t -0.0983263 0.0016611 -0.1015820 -0.0950705 -2.4124891 0.0159922 0.0283664 0.0008285 249
dn cd44-cd62l- t cells Immunophenotyping 554 553 6.0191627 0.2982195 0.0264711 0.0320131 5.7178459 0.2980543 0.0034874 0.0331855 0.3013168 0.0361114 0.0000000 0.0229837 0.0334955 0.4927886 0.3154761 0.3797122 0.1539480 0.9258208 Immunology dn t -0.1853322 0.0018165 -0.1888926 -0.1817719 -4.3483997 0.0000150 0.1551818 0.0009058 250
dn cd44-cd62l+ nkt cells Immunophenotyping 681 680 1.9568869 0.4897412 0.0728534 0.0551103 1.5825072 0.4892092 0.0018692 0.0535525 0.3743797 0.0549823 0.0000000 0.0709843 0.0510963 0.1650531 0.5600681 0.5797489 0.1129935 0.9214060 Immunology dn nkt -0.0345378 0.0014760 -0.0374307 -0.0316448 -0.8989771 0.3688241 0.1134781 0.0007364 251
dn cd44-cd62l+ t cells Immunophenotyping 681 680 6.5751970 0.2910096 0.0082418 0.0265226 6.3002473 0.2908746 -0.0641615 0.0266670 0.2749497 0.0317081 0.0000000 0.0724033 0.0282296 0.0104590 0.2974568 0.3660911 0.1766073 0.9311667 Immunology dn t -0.2076144 0.0014760 -0.2105073 -0.2047214 -5.4039575 0.0000001 0.1784786 0.0007364 252
dn cd44+cd62l- nkt cells Immunophenotyping 681 680 6.0880018 0.3051513 0.0249393 0.0314607 5.9016436 0.3049530 -0.0650061 0.0314749 0.1863582 0.0330522 0.0000000 0.0899454 0.0306287 0.0033889 0.3185232 0.3616276 0.1044970 0.9500927 Immunology dn nkt -0.1269208 0.0014760 -0.1298137 -0.1240278 -3.3035981 0.0009794 0.1048799 0.0007364 253
dn cd44+cd62l- t cells Immunophenotyping 681 680 6.9031565 0.5317351 0.0029614 0.0372473 6.6643493 0.5316222 -0.0114059 0.0372451 0.2388072 0.0309176 0.0000000 0.0143673 0.0282197 0.6107693 0.2977301 0.3429390 0.0897792 0.9722009 Immunology dn t -0.1413661 0.0014760 -0.1442590 -0.1384731 -3.6795926 0.0002427 0.0900215 0.0007364 254
dn cd44+cd62l+ nkt cells Immunophenotyping 681 680 5.7236387 0.4082076 0.0276221 0.0300706 5.7050980 0.4079484 -0.0568451 0.0277114 0.0185407 0.0350697 0.5971354 0.0844672 0.0314002 0.0072559 0.3558331 0.3679692 0.0315354 0.9572523 Immunology dn nkt -0.0335384 0.0014760 -0.0364313 -0.0306455 -0.8729652 0.3828363 0.0315459 0.0007364 255
dn nkt cells Immunophenotyping 745 744 6.6980622 0.3070580 0.0272069 0.0256141 6.5799510 0.3069998 -0.0545167 0.0250777 0.1181112 0.0292101 0.0000561 0.0817236 0.0264058 0.0020153 0.2919727 0.3347295 0.0766184 0.9498933 Immunology dn nkt -0.1366635 0.0013486 -0.1393067 -0.1340202 -3.7214133 0.0002055 0.0767689 0.0006729 256
dn t cells Immunophenotyping 687 686 8.6243064 0.2266865 0.0108640 0.0224939 8.4093022 0.2265913 -0.0276595 0.0226847 0.2150042 0.0280081 0.0000000 0.0385235 0.0250181 0.1238951 0.2643614 0.3262321 0.1524724 0.9192083 Immunology dn t -0.2102933 0.0014631 -0.2131608 -0.2074257 -5.4978710 0.0000000 0.1536707 0.0007299 257
follicular b cells Immunophenotyping 381 377 12.1984990 0.2423859 0.0275597 0.0238301 12.1998610 0.2430763 -0.0196964 0.0271545 -0.0013620 0.0352711 0.9692104 0.0472561 0.0302088 0.1182623 0.2117501 0.3635926 0.0304712 0.8899022 Immunology follicular b cells -0.5406415 0.0026596 -0.5458543 -0.5354287 -10.4832788 0.0000000 0.0304806 0.0013245 258
follicular b cells (cd21/35+) Immunophenotyping 452 454 12.0099114 0.3111353 0.0240319 0.0192532 11.9999375 0.3114812 -0.0026699 0.0230403 0.0099740 0.0284895 0.7263708 0.0267019 0.0278887 0.3386646 0.1834554 0.3064409 0.0173003 0.9329343 Immunology follicular b cells -0.5130486 0.0022222 -0.5174041 -0.5086931 -10.8833784 0.0000000 0.0173020 0.0011074 259
gd + b1 FACS 300 298 9.4580996 0.0525061 0.0366873 0.0271245 9.1968753 0.0544667 0.0377088 0.0318268 0.2612243 0.0432050 0.0000000 -0.0010215 0.0406798 0.9799775 0.2613835 0.3139393 0.2018015 0.8369350 Immunology B cells -0.1832224 0.0033784 -0.1898439 -0.1766008 -3.1522588 0.0017015 0.2046098 0.0016807 260
gd t cells Immunophenotyping 74 77 7.0318066 0.1168745 -0.0251115 0.0792596 6.8030576 0.1112502 -0.0924426 0.0692808 0.2287490 0.0706834 0.0015656 0.0673311 0.0674842 0.3204173 0.2442430 0.2287532 0.2989221 0.9046699 Immunology t cells 0.0658058 0.0137990 0.0387603 0.0928514 0.5601964 0.5761867 0.3083355 0.0067568 261
inkt FACS 300 298 8.1179704 0.0596666 0.0493382 0.0281211 7.7050314 0.0608905 0.0010540 0.0317127 0.4129390 0.0438785 0.0000000 0.0482842 0.0411837 0.2415861 0.2713833 0.3101684 0.3108020 0.8794460 Immunology inkt -0.1335945 0.0033784 -0.1402161 -0.1269729 -2.2984335 0.0218824 0.3214329 0.0016807 262
klrg1+ cd4 t cells Immunophenotyping 74 77 6.8514114 0.1297705 0.0903343 0.0878699 6.5840610 0.1245898 0.0103273 0.0783323 0.2673504 0.0806382 0.0012107 0.0800070 0.0767199 0.2991160 0.2684393 0.2740165 0.1714029 0.8927175 Immunology klrg1 -0.0202780 0.0137990 -0.0473236 0.0067676 -0.1726241 0.8631812 0.1731117 0.0067568 263
klrg1+ cd4+ nkt cells Immunophenotyping 74 77 3.9533606 0.2039937 0.1402696 0.1244417 3.6618637 0.1958590 -0.0141709 0.1084641 0.2914969 0.1108512 0.0096673 0.1544405 0.1057474 0.1467750 0.3825910 0.3557319 0.1193669 0.9242639 Immunology klrg1 0.0730749 0.0137990 0.0460293 0.1001204 0.6220769 0.5348420 0.1199387 0.0067568 264
klrg1+ t-regs Immunophenotyping 74 77 4.7559834 0.3074192 0.0015473 0.1311332 4.8039884 0.3017226 -0.0436951 0.1149904 -0.0480051 0.1185223 0.6861766 0.0452424 0.1126633 0.6887134 0.3994343 0.3862354 0.0163867 0.9668366 Immunology klrg1 0.0338878 0.0137990 0.0068423 0.0609334 0.2884826 0.7733783 0.0163882 0.0067568 265
macrophages FACS 299 294 7.2651993 0.1061899 0.0264847 0.0335624 7.0538836 0.1102756 0.0551372 0.0466040 0.2113157 0.0594103 0.0004111 -0.0286525 0.0558198 0.6079660 0.3142346 0.4619202 0.0754934 0.9270329 Immunology macrophages -0.3852814 0.0034074 -0.3919598 -0.3786030 -6.6003399 0.0000000 0.0756374 0.0016949 266
mzb Immunophenotyping 138 140 9.9467794 0.1161933 -0.0769031 0.0999696 10.0211954 0.1078324 0.0244238 0.0878631 -0.0744160 0.0680803 0.2755353 -0.1013268 0.0652476 0.1218386 0.3531930 0.2424779 0.0595274 0.8491211 Immunology mzb 0.3761584 0.0073533 0.3617461 0.3905707 4.3866046 0.0000164 0.0595979 0.0036364 267
mzb (cd21/35 high) Immunophenotyping 450 452 9.7265898 0.6771381 -0.0093722 0.0407788 9.7693740 0.6766408 -0.0297704 0.0341095 -0.0427842 0.0458542 0.3511093 0.0203982 0.0457319 0.6557037 0.4020318 0.3814203 0.0141295 0.9458243 Immunology mzb 0.0526342 0.0022322 0.0482593 0.0570091 1.1140532 0.2655538 0.0141304 0.0011123 268
nk cells (panel a) Immunophenotyping 750 749 9.1881632 0.1918838 -0.0208628 0.0214493 9.2749087 0.1918297 -0.0102567 0.0201877 -0.0867455 0.0256477 0.0007426 -0.0106060 0.0221504 0.6321564 0.2657773 0.3001858 0.0540503 0.8976342 Immunology nk cells -0.1217439 0.0013396 -0.1243694 -0.1191183 -3.3263034 0.0009014 0.0541031 0.0006684 269
nk klrg1+ cells Immunophenotyping 74 77 6.9868405 0.1926440 0.1404393 0.0878846 6.8175771 0.1885756 -0.0674353 0.0771013 0.1692634 0.0794362 0.0351455 0.2078746 0.0755219 0.0068330 0.2678451 0.2591797 0.0919137 0.9616203 Immunology nk cells 0.0331727 0.0137990 0.0061272 0.0602183 0.2823952 0.7780324 0.0921738 0.0067568 270
nk subsets (q1) Immunophenotyping 603 602 6.6534346 0.4013868 0.0655084 0.0654565 6.6691339 0.4014065 0.0103765 0.0658651 -0.0156994 0.0358706 0.6617280 0.0551319 0.0350139 0.1156908 0.3181851 0.3951938 0.0458587 0.9328153 Immunology nk cells -0.2167443 0.0016681 -0.2200136 -0.2134749 -5.3069142 0.0000001 0.0458909 0.0008319 271
nk subsets (q2) Immunophenotyping 603 602 7.4781408 0.3030198 -0.0094310 0.0308295 7.3989999 0.3032331 0.0090820 0.0334179 0.0791410 0.0338513 0.0196009 -0.0185129 0.0324359 0.5683024 0.2663537 0.3914005 0.0373635 0.9481108 Immunology nk cells -0.3849076 0.0016681 -0.3881769 -0.3816383 -9.4243392 0.0000000 0.0373809 0.0008319 272
nk subsets (q3) Immunophenotyping 537 533 7.4835100 0.2535282 0.0260596 0.0291813 7.6807962 0.2540081 -0.0617345 0.0311417 -0.1972862 0.0339803 0.0000000 0.0877941 0.0334834 0.0088966 0.2548861 0.3730494 0.1273392 0.8929828 Immunology nk cells -0.3809013 0.0018797 -0.3845855 -0.3772171 -8.7854747 0.0000000 0.1280343 0.0009372 273
nk subsets (q4) Immunophenotyping 537 533 7.7129429 0.0750042 -0.0443945 0.0315059 7.7715207 0.0772361 -0.0123384 0.0344354 -0.0585778 0.0367825 0.1116319 -0.0320561 0.0361806 0.3758651 0.2745255 0.4101613 0.0474584 0.7048798 Immunology nk cells -0.4015135 0.0018797 -0.4051977 -0.3978293 -9.2608942 0.0000000 0.0474941 0.0009372 274
nk total FACS 300 298 9.6749006 0.0554235 -0.0505064 0.0318475 9.7631747 0.0649091 0.0124765 0.0479880 -0.0882741 0.0590955 0.1358659 -0.0629829 0.0563689 0.2643841 0.3015653 0.4912944 0.0560026 0.7182654 Immunology nkt cells -0.4880684 0.0033784 -0.4946900 -0.4814468 -8.3969987 0.0000000 0.0560613 0.0016807 275
nkt cells (panel a) Immunophenotyping 750 749 8.0398149 0.2415691 0.0194700 0.0317342 7.8865208 0.2414825 -0.0256584 0.0312694 0.1532941 0.0284517 0.0000001 0.0451284 0.0268140 0.0926360 0.2923169 0.3208026 0.0958870 0.9309090 Immunology nkt cells -0.0929884 0.0013396 -0.0956140 -0.0903629 -2.5406435 0.0111651 0.0961825 0.0006684 276
nkt cells (panel b) Immunophenotyping 674 672 7.4255388 0.4658754 0.0165510 0.0349487 7.2323708 0.4658636 -0.0234268 0.0346611 0.1931680 0.0348847 0.0000000 0.0399778 0.0322495 0.2153782 0.3255260 0.3876450 0.0883457 0.9490853 Immunology nkt cells -0.1746497 0.0014925 -0.1775750 -0.1717244 -4.5206903 0.0000067 0.0885766 0.0007446 277
nkt dn klrg1+ cells Immunophenotyping 74 77 4.5910155 0.2030527 0.0761069 0.1174133 4.5048044 0.1997136 0.0171032 0.1090916 0.0862111 0.1145112 0.4530073 0.0590037 0.1081555 0.5863910 0.3506541 0.4222358 0.0316386 0.9155278 Immunology nkt cells -0.1854783 0.0137990 -0.2125238 -0.1584327 -1.5789526 0.1164676 0.0316492 0.0067568 278
nkt effector FACS 300 298 8.3752317 0.0602510 0.0483191 0.0325017 7.9463755 0.0648418 0.0209653 0.0418168 0.4288562 0.0545719 0.0000000 0.0273539 0.0516256 0.5964492 0.3109454 0.4184540 0.3004721 0.8183404 Immunology nkt cells -0.2969610 0.0033784 -0.3035826 -0.2903395 -5.1090819 0.0000004 0.3100385 0.0016807 279
nkt resting FACS 300 298 7.8587327 0.0650750 -0.0134496 0.0335053 7.7137389 0.0660414 0.0014803 0.0365198 0.1449938 0.0513050 0.0048987 -0.0149300 0.0481617 0.7566918 0.3252153 0.3563717 0.1233032 0.8432387 Immunology nkt cells -0.0914983 0.0033784 -0.0981198 -0.0848767 -1.5741865 0.1159750 0.1239339 0.0016807 280
nkt subsets (q1) Immunophenotyping 603 602 6.1449735 0.3541571 -0.0042115 0.0231923 6.0514224 0.3541643 -0.0267432 0.0236231 0.0935511 0.0311362 0.0027299 0.0225317 0.0292432 0.4412010 0.2765632 0.3365313 0.0643094 0.9441414 Immunology nkt cells -0.1962531 0.0016681 -0.1995224 -0.1929838 -4.8051945 0.0000017 0.0643983 0.0008319 281
nkt subsets (q3) Immunophenotyping 537 533 5.8261556 0.4844815 -0.0075241 0.0693822 5.5799756 0.4847556 -0.0499663 0.0693021 0.2461800 0.0446519 0.0000000 0.0424423 0.0441181 0.3363147 0.3572612 0.4588490 0.1306087 0.9325895 Immunology nkt cells -0.2502611 0.0018797 -0.2539453 -0.2465769 -5.7722626 0.0000000 0.1313591 0.0009372 282
nkt total FACS 300 298 8.8775082 0.0589283 0.0262054 0.0282746 8.5642772 0.0609087 0.0018793 0.0333673 0.3132310 0.0452183 0.0000000 0.0243261 0.0425298 0.5675925 0.2717274 0.3286266 0.2481409 0.8634428 Immunology nkt cells -0.1901341 0.0033784 -0.1967556 -0.1835125 -3.2711714 0.0011329 0.2534307 0.0016807 283
number of live cells acquired panel 1 FACS 308 305 12.4539861 0.0615267 -0.0344933 0.0536521 12.3906205 0.0674572 0.0688374 0.0613773 0.0633655 0.0829258 0.4451415 -0.1033307 0.0802228 0.1983047 0.5621636 0.6485364 0.0581656 0.4338133 Immunology number of live cells acquired panel 1 -0.1429415 0.0032950 -0.1493995 -0.1364835 -2.4901892 0.0130321 0.0582313 0.0016393 284
number of live cells acquired panel 2 FACS 308 304 12.6111317 0.0719857 -0.0100956 0.0525575 12.4716101 0.0856598 0.0619780 0.0719428 0.1395216 0.0912310 0.1267964 -0.0720735 0.0873231 0.4095443 0.5269835 0.7513915 0.0707193 0.5975416 Immunology number of live cells acquired panel 2 -0.3547793 0.0033005 -0.3612481 -0.3483105 -6.1754716 0.0000000 0.0708376 0.0016420 285
others Immunophenotyping 750 749 12.2430990 0.1633566 0.0064537 0.0190211 12.2836983 0.1634433 -0.0087319 0.0197813 -0.0405993 0.0234579 0.0837601 0.0151856 0.0211125 0.4721179 0.2256913 0.2957858 0.0371311 0.8699172 Immunology others -0.2704683 0.0013396 -0.2730938 -0.2678427 -7.3897731 0.0000000 0.0371482 0.0006684 286
percentage of live gated events in panel a Immunophenotyping 726 726 4.2100029 0.1640848 0.0017119 0.0182976 4.2500287 0.1640755 0.0040294 0.0182402 -0.0400259 0.0049824 0.0000000 -0.0023175 0.0047986 0.6292266 0.0526214 0.0518753 0.0561220 0.9911341 Immunology percentage of live gated events 0.0142797 0.0013831 0.0115688 0.0169905 0.3839611 0.7010636 0.0561810 0.0006901 287
percentage of live gated events in panel b Immunophenotyping 726 731 4.2031465 0.1513490 0.0013800 0.0160709 4.2379474 0.1513392 0.0044118 0.0160047 -0.0348010 0.0050680 0.0000000 -0.0030318 0.0048574 0.5326397 0.0539020 0.0535132 0.0533061 0.9891591 Immunology percentage of live gated events 0.0072449 0.0013784 0.0045433 0.0099464 0.1951402 0.8453104 0.0533567 0.0006878 288
rp macrophage (f4/80+) Immunophenotyping 233 231 8.6275443 0.0823357 0.0186464 0.0373540 8.6706959 0.0799098 0.0462321 0.0271743 -0.0431516 0.0428983 0.3151070 -0.0275857 0.0344596 0.4239122 0.2767995 0.2064540 0.0841023 0.9230459 Immunology rp macrophage (f4/80+) 0.2931968 0.0043669 0.2846378 0.3017558 4.4368303 0.0000114 0.0843014 0.0021692 289
t cells (panel a) Immunophenotyping 689 688 11.3230087 0.1606356 -0.0179235 0.0194309 11.3244194 0.1605746 -0.0152245 0.0194158 -0.0014107 0.0267916 0.9580183 -0.0026990 0.0236179 0.9090379 0.2549471 0.3217076 0.0290239 0.8599529 Immunology t cells -0.2325882 0.0014588 -0.2354474 -0.2297290 -6.0896348 0.0000000 0.0290321 0.0007278 290
t cells (panel b) Immunophenotyping 746 748 11.2855856 0.0982081 -0.0386792 0.0194053 11.2900815 0.0982687 -0.0211818 0.0192255 -0.0044959 0.0258722 0.8620733 -0.0174975 0.0222309 0.4313946 0.2534872 0.3152274 0.0561206 0.8611976 Immunology t cells -0.2179792 0.0013441 -0.2206136 -0.2153449 -5.9456749 0.0000000 0.0561796 0.0006707 291
t subset Immunophenotyping 603 603 10.2268951 0.1368441 -0.0233470 0.0200359 10.3568850 0.1375538 -0.0083339 0.0247828 -0.1299899 0.0287922 0.0000071 -0.0150131 0.0272451 0.5817374 0.2064392 0.3604913 0.0808821 0.8928278 Immunology t cells -0.5574621 0.0016667 -0.5607287 -0.5541955 -13.6549775 0.0000000 0.0810592 0.0008313 292
t/nkt/b1 FACS 300 298 11.5313263 0.0403729 0.0352608 0.0281767 11.3618193 0.0472192 0.0561460 0.0383110 0.1695070 0.0486792 0.0005407 -0.0208851 0.0465630 0.6539595 0.2731480 0.3925544 0.1386576 0.6353287 Immunology nkt cells -0.3626727 0.0033784 -0.3692943 -0.3560511 -6.2396211 0.0000000 0.1395566 0.0016807 293
total cell count in spleen FACS 296 289 18.6706416 0.0264905 0.0798543 0.0205304 18.4575254 0.0247584 0.0781255 0.0187010 0.2131162 0.0286825 0.0000000 0.0017287 0.0271529 0.9492617 0.2117467 0.1829534 0.2675409 0.6454046 Immunology total cell count in spleen 0.1461176 0.0034547 0.1393464 0.1528887 2.4859651 0.0131991 0.2742132 0.0017182 294
total number of acquired events in panel a Immunophenotyping 748 748 12.9855244 0.2043769 -0.0024225 0.0247115 12.9736621 0.2046815 -0.0235675 0.0274493 0.0118623 0.0267656 0.6577068 0.0211450 0.0248002 0.3940458 0.2295319 0.3654752 0.0290169 0.8805795 Immunology number events -0.4651566 0.0013423 -0.4677874 -0.4625258 -12.6963036 0.0000000 0.0290251 0.0006698 295
transitional b cells Immunophenotyping 138 140 9.5197138 0.1216018 0.0504471 0.1042537 9.8154818 0.1130127 -0.0412511 0.0917276 -0.2957679 0.0712852 0.0000473 0.0916982 0.0682536 0.1804660 0.3680383 0.2559489 0.2601302 0.8491765 Immunology B cells 0.3632633 0.0073533 0.3488510 0.3776756 4.2362271 0.0000310 0.2662480 0.0036364 296
transitional b cells (cd21/35 low) Immunophenotyping 452 454 9.4770438 0.4676355 0.0453178 0.0350580 9.5221362 0.4679141 -0.0035261 0.0345771 -0.0450924 0.0369937 0.2232732 0.0488439 0.0365622 0.1819997 0.2703613 0.3576273 0.0385475 0.9592461 Immunology B cells -0.2797274 0.0022222 -0.2840829 -0.2753719 -5.9338994 0.0000000 0.0385666 0.0011074 297
tregs FACS 300 298 8.5220250 0.0443123 0.0681287 0.0277122 8.3385765 0.0481212 0.0582085 0.0345139 0.1834485 0.0455229 0.0000644 0.0099201 0.0431855 0.8184108 0.2679443 0.3465087 0.1358444 0.7275501 Immunology tregs -0.2571403 0.0033784 -0.2637619 -0.2505188 -4.4239845 0.0000115 0.1366894 0.0016807 298
tregs effector FACS 300 298 7.7357657 0.0464936 0.0845892 0.0298556 7.5306254 0.0562437 0.0720079 0.0447716 0.2051404 0.0550929 0.0002186 0.0125813 0.0527284 0.8115086 0.2850892 0.4611739 0.1372418 0.6562695 Immunology tregs -0.4809846 0.0033784 -0.4876062 -0.4743630 -8.2751244 0.0000000 0.1381133 0.0016807 299
tregs resting FACS 300 298 7.8654337 0.0555481 0.0657956 0.0366888 7.6770021 0.0611668 0.0689423 0.0460549 0.1884316 0.0604706 0.0019372 -0.0031467 0.0575043 0.9563824 0.3559238 0.4647010 0.1102073 0.6881667 Immunology tregs -0.2666888 0.0033784 -0.2733104 -0.2600673 -4.5882622 0.0000055 0.1106568 0.0016807 300
area under glucose response curve Intraperitoneal glucose tolerance test (IPGTT) 11466 11410 9.2629740 0.0502520 0.0368471 0.0228014 9.6353903 0.0502450 0.0708959 0.0227567 -0.3724162 0.0070775 0.0000000 -0.0340489 0.0066353 0.0000003 0.3247884 0.3024580 0.4987662 0.7264594 Metabolism area under glucose response curve 0.0712311 0.0000875 0.0710597 0.0714025 7.6170409 0.0000000 0.5476624 0.0000437 301
fasted blood glucose concentration Intraperitoneal glucose tolerance test (IPGTT) 11523 11489 4.5134481 0.0489552 0.0125459 0.0079548 4.5464956 0.0489607 0.0425179 0.0079812 -0.0330475 0.0031965 0.0000000 -0.0299720 0.0029532 0.0000000 0.1352472 0.1389464 0.1660960 0.8431129 Metabolism fasted blood glucose concentration -0.0269848 0.0000869 -0.0271552 -0.0268144 -2.8941705 0.0038052 0.1676492 0.0000435 302
glucose Clinical Chemistry 9104 9141 5.1694231 0.1485846 -0.0074694 0.0128310 5.2205912 0.1485653 0.0151447 0.0129702 -0.0511681 0.0042852 0.0000000 -0.0226141 0.0039675 0.0000000 0.1690984 0.1621887 0.0420345 0.9717748 Metabolism glucose 0.0417210 0.0001097 0.0415061 0.0419359 3.9841833 0.0000680 0.0420593 0.0000548 303
initial response to glucose challenge Intraperitoneal glucose tolerance test (IPGTT) 11503 11460 5.3980778 0.0269270 -0.0172614 0.0126205 5.5518514 0.0269532 -0.0244373 0.0126485 -0.1537736 0.0055607 0.0000000 0.0071759 0.0052109 0.1685027 0.2467478 0.2487965 0.2160437 0.5475239 Metabolism initial response to glucose challenge -0.0082683 0.0000871 -0.0084391 -0.0080976 -0.8858509 0.3757071 0.2195023 0.0000436 304
insulin Insulin Blood Level 1186 1206 6.5862230 0.2251236 0.2500342 0.0412360 6.7770431 0.2245668 0.4210472 0.0377419 -0.1908201 0.0412082 0.0000039 -0.1710130 0.0395800 0.0000163 0.7108825 0.6062049 0.4226372 0.7388924 Metabolism insulin 0.1592961 0.0008383 0.1576531 0.1609391 5.5018668 0.0000000 0.4508983 0.0004186 305
respiratory exchange ratio Indirect Calorimetry 2859 6426 -0.1015081 0.0092962 -0.0118279 0.0020214 -0.0860823 0.0091519 -0.0090039 0.0016030 -0.0154258 0.0018833 0.0000000 -0.0028240 0.0016027 0.0781118 0.0353752 0.0336322 0.1181863 0.7969724 Metabolism respiratory exchange ratio 0.0506218 0.0002529 0.0501261 0.0511175 3.1830989 0.0014619 0.1187412 0.0001077 306
total food intake Indirect Calorimetry 2489 3941 1.2202326 0.1202135 -0.0102818 0.0159969 1.2380037 0.1197303 -0.0055305 0.0132616 -0.0177712 0.0138668 0.2000489 -0.0047512 0.0132190 0.7192923 0.2565224 0.2644627 0.0104981 0.8738865 Metabolism total food intake -0.0304102 0.0003281 -0.0310533 -0.0297672 -1.6788817 0.0932237 0.0104985 0.0001556 307
total water intake Indirect Calorimetry 1083 2502 1.8704910 0.4928407 0.0209250 0.0196772 1.7900943 0.4925616 0.0006942 0.0142939 0.0803967 0.0182505 0.0000109 0.0202308 0.0148745 0.1738965 0.2298251 0.1342473 0.0173803 0.9934336 Metabolism total water intake 0.5378982 0.0006630 0.5365986 0.5391977 20.8895573 0.0000000 0.0173820 0.0002792 308
body length Body Composition (DEXA lean/fat) 8439 8475 2.2674687 0.0135819 0.0290265 0.0021409 2.2589450 0.0135793 0.0284485 0.0021478 0.0085238 0.0006060 0.0000000 0.0005780 0.0005507 0.2939573 0.0222031 0.0227660 0.3682457 0.9481084 Morphology body length -0.0250340 0.0001183 -0.0252658 -0.0248022 -2.3017624 0.0213607 0.3863921 0.0000591 309
bone area Body Composition (DEXA lean/fat) 10900 10938 2.1633065 0.0323593 0.0824692 0.0153567 2.1231266 0.0323512 0.0847535 0.0153760 0.0401799 0.0019040 0.0000000 -0.0022843 0.0017554 0.1931831 0.0797376 0.0828493 0.4266618 0.8731530 Morphology bone area -0.0382811 0.0000916 -0.0384607 -0.0381016 -3.9995955 0.0000637 0.4558085 0.0000458 310
bone mineral content (excluding skull) Body Composition (DEXA lean/fat) 10900 10938 -0.7593848 0.0596445 0.1194575 0.0216326 -0.8383747 0.0596386 0.1272177 0.0216513 0.0789898 0.0021576 0.0000000 -0.0077602 0.0020035 0.0001077 0.0904720 0.0965475 0.4169303 0.9205882 Morphology bone mineral content (excluding skull) -0.0649941 0.0000916 -0.0651736 -0.0648145 -6.7905511 0.0000000 0.4439706 0.0000458 311
bone mineral density (excluding skull) Body Composition (DEXA lean/fat) 10901 10938 -2.9338356 0.0680930 0.0375074 0.0062762 -2.9731911 0.0680924 0.0413518 0.0062966 0.0393555 0.0011374 0.0000000 -0.0038444 0.0010398 0.0002184 0.0438206 0.0513934 0.1408504 0.9737452 Morphology bone mineral density (excluding skull) -0.1594052 0.0000916 -0.1595847 -0.1592257 -16.6549597 0.0000000 0.1417931 0.0000458 312
fat mass Body Composition (DEXA lean/fat) 11011 11011 1.5042419 0.1058972 0.3828757 0.0295880 1.3935671 0.1059060 0.3110447 0.0296770 0.1106748 0.0045340 0.0000000 0.0718309 0.0041513 0.0000000 0.1713127 0.2134857 0.5803954 0.9325691 Morphology fat mass -0.2200790 0.0000908 -0.2202570 -0.2199009 -23.0904672 0.0000000 0.6630588 0.0000454 313
fat/body weight Body Composition (DEXA lean/fat) 11000 11008 -1.7488656 0.1059845 0.2362343 0.0295102 -1.8603934 0.1059931 0.1641502 0.0295995 0.1115278 0.0045361 0.0000000 0.0720841 0.0041538 0.0000000 0.1713013 0.2136235 0.3560662 0.9107433 Morphology fat mass -0.2207914 0.0000909 -0.2209696 -0.2206132 -23.1578486 0.0000000 0.3723737 0.0000454 314
lean mass Body Composition (DEXA lean/fat) 11012 11012 2.8897429 0.0219196 0.1069080 0.0030912 2.9274280 0.0219208 0.1173986 0.0031454 -0.0376852 0.0011904 0.0000000 -0.0104906 0.0010839 0.0000000 0.0426002 0.0569964 0.7141805 0.9591301 Morphology lean mass -0.2911300 0.0000908 -0.2913081 -0.2909520 -30.5464639 0.0000000 0.8956650 0.0000454 315
lean/body weight Body Composition (DEXA lean/fat) 11001 11009 -0.3775910 0.0268470 -0.0396128 0.0032375 -0.3407288 0.0268445 -0.0293422 0.0032904 -0.0368622 0.0011876 0.0000000 -0.0102706 0.0010821 0.0000000 0.0424420 0.0569992 0.2022049 0.9153021 Morphology lean mass -0.2948969 0.0000909 -0.2950751 -0.2947188 -30.9318607 0.0000000 0.2050304 0.0000454 316
left kidney Organ Weight 1066 1118 -1.8859884 0.0058648 0.0893003 0.0049537 -1.7669034 0.0053179 0.0976054 0.0045551 -0.1190850 0.0068119 0.0000000 -0.0083051 0.0065775 0.2068567 0.0992489 0.0869714 0.8225738 0.8478376 Morphology kidney weight 0.1320729 0.0009188 0.1302721 0.1338737 4.3571629 0.0000138 1.1647252 0.0004585 317
number of caudal vertebrae X-ray 2789 2739 3.2366936 0.0406679 0.0010135 0.0007591 3.2341859 0.0406661 0.0013921 0.0007902 0.0025077 0.0008163 0.0021364 -0.0003786 0.0007802 0.6275338 0.0192581 0.0177858 0.0097459 0.9802188 Morphology number of caudal vertebrae 0.0795265 0.0003622 0.0788166 0.0802364 4.1785669 0.0000298 0.0097462 0.0001810 318
number of center entries Open Field 6567 6540 4.5084002 0.2353913 -0.0044965 0.0217276 4.4841652 0.2353619 0.0053132 0.0214710 0.0242350 0.0114552 0.0343976 -0.0098097 0.0106416 0.3566380 0.3440418 0.3306239 0.0152250 0.9171448 Morphology number of center entries 0.0397812 0.0001527 0.0394820 0.0400804 3.2196878 0.0012864 0.0152261 0.0000763 319
number of digits X-ray 5769 5715 2.9958364 0.0000690 -0.0000051 0.0000489 2.9957977 0.0000636 -0.0000050 0.0000453 0.0000387 0.0000519 0.4566154 -0.0000001 0.0000515 0.9984993 0.0020481 0.0017195 0.0138123 0.0913693 Morphology number of digits 0.1748482 0.0001743 0.1745067 0.1751897 13.2456884 0.0000000 0.0138132 0.0000871 320
number of lumbar vertebrae X-ray 4714 4664 1.7916792 0.0002160 0.0000293 0.0001731 1.7911860 0.0002990 -0.0001462 0.0002866 0.0004933 0.0003069 0.1080369 0.0001755 0.0003017 0.5606985 0.0070207 0.0135018 0.0262256 0.0597709 Morphology number of lumbar vertebrae -0.6539620 0.0002134 -0.6543803 -0.6535437 -44.7659149 0.0000000 0.0262316 0.0001067 321
number of rears - total Open Field 5470 5426 4.7813669 0.1092349 0.0644057 0.0202613 4.8196521 0.1092745 0.0795043 0.0182460 -0.0382852 0.0156597 0.0145104 -0.0150986 0.0142105 0.2880383 0.4849618 0.4482444 0.1393226 0.6652238 Morphology number of rears - total 0.0787307 0.0001837 0.0783708 0.0790907 5.8095133 0.0000000 0.1402347 0.0000918 322
number of ribs left X-ray 5854 5791 2.5650721 0.0000950 0.0000809 0.0000714 2.5648603 0.0000905 0.0000586 0.0000696 0.0002118 0.0000991 0.0326492 0.0000223 0.0000962 0.8164591 0.0035548 0.0036056 0.0205375 0.2218439 Morphology number of ribs -0.0141705 0.0001718 -0.0145073 -0.0138337 -1.0809913 0.2797234 0.0205403 0.0000859 323
number of ribs right X-ray 5854 5791 2.5648736 0.0000708 -0.0000575 0.0000587 2.5648957 0.0000765 -0.0000435 0.0000668 -0.0000221 0.0000862 0.7976561 -0.0000140 0.0000834 0.8665871 0.0028114 0.0033565 0.0118363 0.2465830 Morphology number of ribs -0.1772021 0.0001718 -0.1775389 -0.1768653 -13.5177774 0.0000000 0.0118369 0.0000859 324
number of signals Electrocardiogram (ECG) 6006 5936 3.1516321 0.2422932 0.0007387 0.0080461 3.1517773 0.2423164 0.0093961 0.0073829 -0.0001452 0.0096245 0.9879654 -0.0086574 0.0084633 0.3063637 0.3003117 0.3027687 0.0083034 0.8873002 Morphology number of signals -0.0081491 0.0001676 -0.0084776 -0.0078207 -0.6295330 0.5290122 0.0083036 0.0000838 325
number of thoracic vertebrae X-ray 4714 4664 2.5649681 0.0000217 0.0000045 0.0000221 2.5649714 0.0000216 -0.0000090 0.0000212 -0.0000033 0.0000306 0.9143255 0.0000135 0.0000306 0.6598251 0.0010793 0.0010851 0.0048632 0.0049705 Morphology number of thoracic vertebrae -0.0053150 0.0002134 -0.0057333 -0.0048968 -0.3638329 0.7159910 0.0048633 0.0001067 326
right kidney Organ Weight 1067 1120 -1.8320682 0.0057359 0.0913512 0.0050004 -1.7210810 0.0052410 0.1015180 0.0046849 -0.1109872 0.0069268 0.0000000 -0.0101668 0.0067107 0.1299263 0.1003178 0.0903670 0.8199338 0.8391281 Morphology kidney weight 0.1044864 0.0009176 0.1026880 0.1062848 3.4494056 0.0005725 1.1566154 0.0004579 327
spleen weight Immunophenotyping 3267 3274 -1.7720012 0.6393158 0.0971945 0.0151605 -2.0341133 0.6393337 0.1209100 0.0161184 0.2621121 0.0076098 0.0000000 -0.0237155 0.0074233 0.0014076 0.1253791 0.2327126 0.0441473 0.9954062 Morphology spleen weight -0.6184620 0.0003060 -0.6190618 -0.6178621 -35.3525336 0.0000000 0.0441760 0.0001530 328
tibia length X-ray 5527 5485 2.9019939 0.0062543 0.0148203 0.0008767 2.8935691 0.0062531 0.0099889 0.0008683 0.0084248 0.0005920 0.0000000 0.0048314 0.0005592 0.0000000 0.0166677 0.0168473 0.2488198 0.9040186 Morphology tibia length -0.0107208 0.0001817 -0.0110769 -0.0103646 -0.7952849 0.4264650 0.2541543 0.0000908 329
alanine aminotransferase Clinical Chemistry 8396 8423 3.4874107 0.0747084 -0.0304715 0.0170334 3.6409471 0.0746065 -0.0046435 0.0174551 -0.1535364 0.0094940 0.0000000 -0.0258281 0.0087038 0.0030075 0.3524561 0.3690391 0.1296504 0.7128524 Physiology alanine aminotransferase -0.0459765 0.0001190 -0.0462097 -0.0457434 -4.2154432 0.0000251 0.1303843 0.0000595 330
albumin Clinical Chemistry 8422 8460 3.4315732 0.0259716 0.0086694 0.0040263 3.3593105 0.0259692 0.0014579 0.0041060 0.0722627 0.0013490 0.0000000 0.0072115 0.0012318 0.0000000 0.0432126 0.0571820 0.2613473 0.9186962 Physiology albumin -0.2801068 0.0001185 -0.2803390 -0.2798745 -25.7301459 0.0000000 0.2675540 0.0000592 331
albumin to creatinine ratio Urinalysis 363 362 2.4548142 0.0570822 -0.1252606 0.0460314 2.9504468 0.0523461 -0.0229111 0.0439907 -0.4956327 0.0454436 0.0000000 -0.1023495 0.0433387 0.0184796 0.3935686 0.3020302 0.4375430 0.6563707 Physiology albumin to creatinine ratio 0.2647243 0.0027816 0.2592724 0.2701762 5.0192965 0.0000007 0.4691880 0.0013850 332
alkaline phosphatase Clinical Chemistry 8343 8388 4.9687362 0.1355736 -0.0664509 0.0077797 4.6129991 0.1355679 -0.0556250 0.0079168 0.3557371 0.0031327 0.0000000 -0.0108259 0.0028562 0.0001511 0.1107696 0.1217699 0.3705617 0.9813576 Physiology alkaline phosphatase -0.0946799 0.0001196 -0.0949142 -0.0944455 -8.6581291 0.0000000 0.3890741 0.0000598 333
alpha-amylase Clinical Chemistry 5517 5586 6.4036853 0.0724331 0.0521590 0.0063120 6.5320656 0.0724323 0.0666765 0.0064111 -0.1283803 0.0034354 0.0000000 -0.0145175 0.0033097 0.0000116 0.1037533 0.1051884 0.4794181 0.9019706 Physiology alpha-amylase -0.0137355 0.0001802 -0.0140888 -0.0133823 -1.0231144 0.3062761 0.5222284 0.0000901 334
aspartate aminotransferase Clinical Chemistry 8332 8368 4.2556704 0.1141884 -0.0861944 0.0218818 4.2636478 0.1141233 -0.0420546 0.0221186 -0.0079774 0.0086580 0.3568620 -0.0441398 0.0079198 0.0000000 0.3213276 0.3236880 0.1021412 0.8502306 Physiology aspartate aminotransferase -0.0073188 0.0001198 -0.0075536 -0.0070839 -0.6686537 0.5037257 0.1024986 0.0000599 335
body temp Echo 1057 491 3.6077807 0.0016312 0.0010904 0.0012145 3.6077533 0.0020157 -0.0002666 0.0013383 0.0000273 0.0019402 0.9887565 0.0013570 0.0015386 0.3779587 0.0212314 0.0164000 0.0328890 0.4809629 Physiology body temp 0.2576496 0.0014990 0.2547117 0.2605876 6.6547621 0.0000000 0.0329009 0.0006472 336
calcium Clinical Chemistry 8366 8425 2.2056032 0.0184403 0.0074432 0.0035003 2.2028542 0.0184374 0.0068829 0.0035127 0.0027490 0.0007217 0.0001400 0.0005603 0.0006516 0.3898838 0.0259170 0.0262927 0.0589771 0.9694585 Physiology calcium -0.0143900 0.0001192 -0.0146236 -0.0141565 -1.3182714 0.1874308 0.0590456 0.0000596 337
chloride Clinical Chemistry 6176 6149 4.6981018 0.0112407 0.0017731 0.0030901 4.6902264 0.0112397 0.0005723 0.0030961 0.0078754 0.0004391 0.0000000 0.0012008 0.0004137 0.0037118 0.0142676 0.0133934 0.0589853 0.9670659 Physiology chloride 0.0632276 0.0001624 0.0629094 0.0635458 4.9622464 0.0000007 0.0590538 0.0000812 338
creatine kinase Clinical Chemistry 4339 4390 5.2852262 0.2662480 -0.0660269 0.0601441 5.2439815 0.2662488 -0.0992179 0.0610648 0.0412447 0.0264201 0.1185384 0.0331911 0.0255856 0.1945820 0.7026097 0.6870068 0.0965535 0.7299028 Physiology creatine kinase 0.0224587 0.0002293 0.0220093 0.0229081 1.4831856 0.1380612 0.0968552 0.0001146 339
creatinine Clinical Chemistry 7564 7667 -1.2054495 0.4960204 -0.0018385 0.0076667 -1.3208381 0.4960129 -0.0187812 0.0080595 0.1153886 0.0048768 0.0000000 0.0169427 0.0044951 0.0001645 0.1689517 0.1685035 0.0341133 0.9961069 Physiology creatinine 0.0026573 0.0001314 0.0023998 0.0029147 0.2318404 0.8166651 0.0341265 0.0000657 340
free fatty acids Clinical Chemistry 3135 3249 -0.1305858 0.3651900 0.0637712 0.0175310 -0.1803098 0.3650933 0.0707192 0.0186169 0.0497240 0.0107872 0.0000041 -0.0069480 0.0098092 0.4787779 0.2730127 0.2555672 0.0692082 0.9467246 Physiology free fatty acids 0.0660387 0.0003137 0.0654239 0.0666535 3.7286913 0.0001941 0.0693190 0.0001567 341
fructosamine Clinical Chemistry 4390 4468 5.4174268 0.0770499 0.0054853 0.0099175 5.3673952 0.0770482 0.0099498 0.0099436 0.0500316 0.0019494 0.0000000 -0.0044645 0.0018774 0.0174293 0.0504986 0.0536649 0.1248456 0.9451030 Physiology fructosamine -0.0608108 0.0002260 -0.0612536 -0.0603679 -4.0454727 0.0000527 0.1255004 0.0001129 342
glycerol Clinical Chemistry 1977 2014 -2.0714219 0.0439023 0.0523846 0.0242027 -2.1483852 0.0441933 0.1215904 0.0247769 0.0769633 0.0106424 0.0000000 -0.0692058 0.0108494 0.0000000 0.1962345 0.2167725 0.2447197 0.5892212 Physiology glycerol -0.0995334 0.0005019 -0.1005172 -0.0985497 -4.4427247 0.0000091 0.2497883 0.0002508 343
glycosilated hemoglobin a1c (hba1c) Clinical Chemistry 362 362 1.3851574 0.0163787 0.0115224 0.0034473 1.4190149 0.0163582 0.0158937 0.0032525 -0.0338575 0.0043985 0.0000000 -0.0043713 0.0040774 0.2840813 0.0291122 0.0301586 0.5355267 0.8402156 Physiology hemoglobin -0.0353112 0.0027855 -0.0407707 -0.0298517 -0.6690521 0.5036761 0.5978624 0.0013870 344
hdl cholesterol Plasma Chemistry 483 470 4.0927576 0.0901694 0.0541639 0.0206114 4.3339220 0.0899763 0.0563073 0.0190307 -0.2411644 0.0139172 0.0000000 -0.0021434 0.0126617 0.8656167 0.1368063 0.1113546 0.5953681 0.8933132 Physiology hdl-cholesterol 0.2058175 0.0021123 0.2016774 0.2099576 4.4781778 0.0000084 0.6859409 0.0010526 345
hdl-cholesterol Clinical Chemistry 8305 8353 4.0492511 0.0328432 0.0739518 0.0067656 4.1932566 0.0327973 0.0617097 0.0068286 -0.1440055 0.0036489 0.0000000 0.0122422 0.0033481 0.0002566 0.1411759 0.1338616 0.5380177 0.8165442 Physiology hdl-cholesterol 0.0532007 0.0001201 0.0529653 0.0534361 4.8543823 0.0000012 0.6013616 0.0000600 346
iron Clinical Chemistry 6746 6815 -2.0224213 0.0582280 0.0375757 0.0093828 -2.2076104 0.0582039 0.0152778 0.0093246 0.1851891 0.0040012 0.0000000 0.0222979 0.0037856 0.0000000 0.1474967 0.1234585 0.3318302 0.8084656 Physiology iron 0.1779013 0.0001476 0.1776121 0.1781904 14.6456329 0.0000000 0.3448835 0.0000738 347
lactate dehydrogenase Clinical Chemistry 540 542 5.5411952 0.1244656 -0.0525081 0.0361943 5.6908611 0.1247023 -0.0302598 0.0363625 -0.1496659 0.0400743 0.0001989 -0.0222484 0.0377248 0.5554927 0.3284270 0.3524362 0.1034099 0.6914074 Physiology lactate dehydrogenase -0.0705516 0.0018587 -0.0741947 -0.0669086 -1.6364301 0.1020409 0.1037809 0.0009268 348
ldl-cholesterol Clinical Chemistry 2576 2619 2.0427552 0.2396326 -0.1109281 0.0817547 1.9354255 0.2396306 0.0118165 0.0818784 0.1073297 0.0080671 0.0000000 -0.1227446 0.0079639 0.0000000 0.1647633 0.1753414 0.1707536 0.9621836 Physiology ldl-cholesterol -0.0622219 0.0003855 -0.0629773 -0.0614664 -3.1692381 0.0015373 0.1724428 0.0001926 349
lipase Clinical Chemistry 1182 1199 4.0607117 0.0178796 0.0005371 0.0181520 4.0359400 0.0165985 -0.0271932 0.0163806 0.0247717 0.0150048 0.0989019 0.0277303 0.0150430 0.0654086 0.2401279 0.2152304 0.1052347 0.3965395 Physiology lipase 0.1094690 0.0008421 0.1078184 0.1111196 3.7722179 0.0001658 0.1056257 0.0004205 350
magnesium Clinical Chemistry 2380 2372 1.9765405 0.5520735 0.0160806 0.0128914 1.9028063 0.5520692 0.0043209 0.0130741 0.0737342 0.0029481 0.0000000 0.0117597 0.0028177 0.0000306 0.0625734 0.0605627 0.0279914 0.9984934 Physiology magnesium 0.0326604 0.0004214 0.0318344 0.0334863 1.5909982 0.1116765 0.0279987 0.0002106 351
microalbumin (calculated) Urinalysis 358 356 -0.3350678 0.0992541 -0.1893237 0.0550981 0.2658125 0.0950855 -0.0832326 0.0520871 -0.6008803 0.0521981 0.0000000 -0.1060910 0.0491814 0.0313542 0.4512230 0.3360728 0.4157666 0.6664001 Physiology microalbumin (calculated) 0.2946259 0.0028249 0.2890893 0.3001626 5.5433318 0.0000000 0.4425629 0.0014065 352
phosphorus Clinical Chemistry 8332 8421 1.8823755 0.0469773 -0.0052985 0.0079849 1.8334718 0.0469317 0.0172573 0.0080952 0.0489038 0.0042609 0.0000000 -0.0225558 0.0038832 0.0000000 0.1621762 0.1550744 0.0822299 0.8166521 Physiology phosphorus 0.0447790 0.0001194 0.0445449 0.0450131 4.0975275 0.0000420 0.0824160 0.0000597 353
potassium Clinical Chemistry 6153 6110 1.5300513 0.0672164 -0.0282192 0.0110674 1.6124227 0.0672089 -0.0139817 0.0111060 -0.0823715 0.0028232 0.0000000 -0.0142375 0.0026698 0.0000001 0.0958638 0.0851860 0.1379238 0.9132281 Physiology potassium 0.1180912 0.0001632 0.1177714 0.1184110 9.2446810 0.0000000 0.1388085 0.0000816 354
sodium Clinical Chemistry 6174 6141 4.9850002 0.0084283 0.0027132 0.0021211 4.9949166 0.0084275 0.0022571 0.0021268 -0.0099164 0.0003624 0.0000000 0.0004562 0.0003415 0.1816804 0.0118313 0.0109774 0.1403481 0.9735266 Physiology sodium 0.0749122 0.0001625 0.0745937 0.0752307 5.8768871 0.0000000 0.1412807 0.0000812 355
thyroxine Clinical Chemistry 1451 1465 1.4885512 0.0147412 -0.0014116 0.0134483 1.3749037 0.0145962 0.0261282 0.0135829 0.1136475 0.0094286 0.0000000 -0.0275397 0.0094684 0.0036606 0.1674618 0.1409476 0.2583731 0.5721188 Physiology thyroxine 0.1723702 0.0006873 0.1710231 0.1737173 6.5748938 0.0000000 0.2643643 0.0003433 356
total bilirubin Clinical Chemistry 8250 8216 -2.7999936 0.2912573 -0.0149502 0.0413627 -2.8379057 0.2912309 0.0115109 0.0416602 0.0379120 0.0112689 0.0007693 -0.0264611 0.0103835 0.0108325 0.4131978 0.4264122 0.0180796 0.9420033 Physiology total bilirubin -0.0314804 0.0001215 -0.0317185 -0.0312422 -2.8558716 0.0042973 0.0180815 0.0000607 357
total cholesterol Clinical Chemistry 8895 8888 4.5137849 0.0293405 0.0749688 0.0070564 4.6025157 0.0292923 0.0790868 0.0071422 -0.0887308 0.0032927 0.0000000 -0.0041180 0.0030283 0.1739043 0.1299355 0.1261812 0.4926154 0.8248195 Physiology total cholesterol 0.0293195 0.0001125 0.0290990 0.0295400 2.7642115 0.0057119 0.5395079 0.0000562 358
total protein Clinical Chemistry 8348 8441 3.8900952 0.0142165 0.0117084 0.0028174 3.8832784 0.0142063 0.0093458 0.0028354 0.0068168 0.0010825 0.0000000 0.0023626 0.0009823 0.0161718 0.0410728 0.0384044 0.1047001 0.8768655 Physiology total protein 0.0671750 0.0001192 0.0669414 0.0674086 6.1534810 0.0000000 0.1050852 0.0000596 359
triglycerides Clinical Chemistry 8654 8690 4.3483605 0.0936382 0.1097582 0.0224171 4.4940983 0.0935474 0.1412863 0.0225588 -0.1457378 0.0074806 0.0000000 -0.0315281 0.0069058 0.0000050 0.3008457 0.2772580 0.3357096 0.8493813 Physiology triglycerides 0.0816495 0.0001154 0.0814234 0.0818756 7.6021584 0.0000000 0.3492493 0.0000577 360
uibc (unsaturated iron binding capacity) Clinical Chemistry 1207 1236 3.4584012 0.0233027 0.0170954 0.0130189 3.5113985 0.0221970 0.0532161 0.0104348 -0.0529973 0.0106702 0.0000007 -0.0361207 0.0107465 0.0007895 0.1924423 0.1219646 0.3171165 0.5267786 Physiology uibc (unsaturated iron binding capacity) 0.4560755 0.0008208 0.4544668 0.4576843 15.9191100 0.0000000 0.3284380 0.0004098 361
urea (blood urea nitrogen - bun) Clinical Chemistry 8307 8434 3.1999937 0.0392664 0.0150826 0.0092693 3.1881203 0.0392040 0.0178335 0.0092122 0.0118734 0.0037644 0.0016127 -0.0027509 0.0034783 0.4290248 0.1595248 0.1235928 0.0587308 0.7866078 Physiology urea (blood urea nitrogen - bun) 0.2552079 0.0001195 0.2549737 0.2554422 23.3442262 0.0000000 0.0587985 0.0000597 362
uric acid Clinical Chemistry 359 357 2.7077842 0.2246100 -0.0213698 0.0519723 2.8952954 0.2247217 0.0054386 0.0499219 -0.1875112 0.0713638 0.0088073 -0.0268083 0.0680181 0.6936129 0.4872496 0.5281760 0.1380184 0.5998811 Physiology uric acid -0.0806610 0.0028169 -0.0861821 -0.0751400 -1.5197644 0.1290129 0.1389049 0.0014025 363
  • parameter_name: the name of phenotypic traits
  • f_n: the number of females for a particular trait
  • m_n: the number of males for a particular trait
  • f_intercept: the intercept (phenotypic mean) for females
  • f_intercept_se: standard error for the intercept (phenotypic mean) for females
  • f_slope: the slope for females
  • f_slope_se: standard error for the slope for females
  • m_intercept: the intercept (phenotypic mean) for males
  • m_intercept_se: standard error for the intercept (phenotypic mean) for males
  • m_slope: the slope for males
  • m_slope_se: standard error for the slope for males
  • fm_diff_int: difference in intercepts between females and males
  • fm_diff_int_se: standard error for the difference in intercepts between females and males
  • fm_diff_int_p: p value associated with fm_diff_int
  • fm_diff_slope: difference in slopes between females and males
  • fm_diff_slope_se: standard error for for the difference in intercepts between females and males
  • fm_diff_slope_p: p value associated with fm_diff_slope
  • batch_sd: the square-root of the variance component for “batch” (see the text)
  • f_sd: female residual standard deviation
  • m_sd: female residual standard deviation
  • r_m: marginal R squared (variance accounted for by fixed effects)
  • r_c: conditional R squared (variance accounted for by fixed and random effects)
  • Category: 9 function categories (see the text)
  • parameter_group: Grouping for non-independent traits
  • lnVR: log ratio between f_sd and m_sd
  • VlnVR: the sampling variance for lnVR
  • low_lnVR: lower confidence limit for lnVR
  • high_lnVR: upper confidence limit for lnVR
  • t_val_sd: t values associated with lnVR and VlnVR
  • p_val_sd: p values associated with lnVR and VlnVR
  • Zr: transformed value of sqrt(r_c)
  • VZr: sampling variance for Zr
  • obs: unique observation level ID

Extra: dataset for comparing models with and wihout substrains

short_list <- discard(dat_list, ~.x[["nstrain"]][[1]] == 1)

processing2 <- map_dfr(short_list, get_para_poss2)
dat_short <- data.frame(processing2, row.names = NULL)

dat_short %>%
    left_join(dat_category, by = ("parameter_name" = "parameter_name")) %>%
    arrange(Category) -> dat_short

dim(dat_short)

# write_csv(dat, here('data/test4.csv'))
write_csv(dat_short, here("data/data_comparision.csv"))

Data analysis

Preparation for categorizing into scenarios

Here, we merge p values for non-independent (closely related traits) using the custom functions for merging p values via the poolr package.

# here we need to collapse p values which are related split data into 2 ones
# with replications within parameter_group

dat %>%
    group_by(parameter_group) %>%
    mutate(count = n()) -> dat
#
dat1 <- dat[which(dat$count == 1), ]
# dim(dat1)

# taking out independent traits
dat2 <- dat[-which(dat$count == 1), ]

# nesting data into a lot of data sets and apply p_mod function
n_dat2 <- dat2 %>%
    group_by(parameter_group) %>%
    nest()

# function to get merged p value for intercepts
p_mod_int <- function(data) {

    len <- dim(data)[1]
    Rmat <- matrix(0.8, nrow = len, ncol = len)
    diag(Rmat) <- 1

    p_mod <- fisher(data$fm_diff_int_p, adjust = "liji", R = Rmat)
    p <- p_mod$p
    return(p)

}


# function to get merged p value for slopes
p_mod_slp <- function(data) {

    len <- dim(data)[1]
    Rmat <- matrix(0.8, nrow = len, ncol = len)
    diag(Rmat) <- 1

    p_mod <- fisher(data$fm_diff_slope_p, adjust = "liji", R = Rmat)
    p <- p_mod$p
    return(p)

}

# function to get merged p value for SD
p_mod_sd <- function(data) {

    len <- dim(data)[1]
    Rmat <- matrix(0.8, nrow = len, ncol = len)
    diag(Rmat) <- 1

    p_mod <- fisher(data$p_val_sd, adjust = "liji", R = Rmat)
    p <- p_mod$p
    return(p)

}


# merged dat2
m_dat2 <- n_dat2 %>%
    mutate(merged_p_sd = map_dbl(data, p_mod_sd), merged_p_int = map_dbl(data, p_mod_int),
        merged_p_slp = map_dbl(data, p_mod_slp))

The number of cases Scenario A

# full dataset
dat_slopes <- dat %>%
    filter(fm_diff_slope_p <= 0.05 & fm_diff_int_p > 0.05)

# 17 out of 363 traits sig slope diff - scenario A
nrow(dat_slopes)
## [1] 17
# reduced dataset
dat_slopes1 <- dat1 %>%
    filter(fm_diff_slope_p <= 0.05 & fm_diff_int_p > 0.05)

dat_slopes2 <- m_dat2 %>%
    filter(merged_p_slp <= 0.05 & merged_p_int > 0.05)

# 11 out of 219 traits sig slope diff - scenario A
nrow(dat_slopes1) + nrow(dat_slopes2)
## [1] 11

The number of Scenario B

# full dataset
dat_int <- dat %>%
    filter(fm_diff_int_p <= 0.05 & fm_diff_slope_p > 0.05)

# 154 out of 363 traits sig intercept diff same slope - scenario B
nrow(dat_int)
## [1] 154
# reduced dataset
dat_int1 <- dat1 %>%
    filter(fm_diff_int_p <= 0.05 & fm_diff_slope_p > 0.05)

dat_int2 <- m_dat2 %>%
    filter(merged_p_int <= 0.05 & merged_p_slp > 0.05)

# 93 out of 219 traits sig intercept diff same slope - scenario B
nrow(dat_int1) + nrow(dat_int2)
## [1] 93

The number of Scenario C

# full dataset
dat_intSlopes <- dat %>%
    filter(fm_diff_int_p <= 0.05 & fm_diff_slope_p <= 0.05)

# 70 out of 363 sig intercept and slope diff - scenario C
nrow(dat_intSlopes)
## [1] 70
# reduced dataset
dat_intSlopes1 <- dat1 %>%
    filter(fm_diff_int_p <= 0.05 & fm_diff_slope_p <= 0.05)

dat_intSlopes2 <- m_dat2 %>%
    filter(merged_p_int <= 0.05 & merged_p_slp <= 0.05)

# 57 out of 219 sig intercept and slope diff - scenario C
nrow(dat_intSlopes1) + nrow(dat_intSlopes2)
## [1] 57

Not in these scenarios

# full dataset
dat_intslopesNS <- dat %>%
    filter(fm_diff_slope_p > 0.05 & fm_diff_int_p > 0.05)
# 122 out of 363 - no sig difference between intercept and slope - scenario D
nrow(dat_intslopesNS)
## [1] 122
# reduced dataset
dat_intslopesNS1 <- dat1 %>%
    filter(fm_diff_slope_p > 0.05 & fm_diff_int_p > 0.05)

dat_intslopesNS2 <- m_dat2 %>%
    filter(merged_p_int > 0.05 & merged_p_slp > 0.05)

# 58 out of 219 no sig difference between intercept and slope - scenario D
nrow(dat_intslopesNS1) + nrow(dat_intslopesNS2)
## [1] 58

Sex difference in residual SD

# full dataset 249 out of 363 signficant differences in residual SDs
length(which(dat$p_val_sd <= 0.05))
## [1] 249
# hist(log(dat$p_val_sd)) # p = 0.05 ~ - 3

# 154 of out of 219 signficant differences in residual SDs
length(which(m_dat2$merged_p_sd <= 0.05)) + length(which(dat1$p_val_sd <= 0.05))
## [1] 154

Creating Figure 2

# set colour for males and females

colours <- c("#D55E00", "#009E73")  # c('#882255','#E69F00') 
colours2 <- c("#D55E00", "#7D26CD", "#009E73")

# sex bias in slope parameter under scenario A
dat_p1 <- dat_slopes %>%
    group_by_at(vars(Category)) %>%
    summarise(malebias = sum(m_slope > f_slope), femalebias = sum(f_slope > m_slope),
        total = malebias + femalebias, malepercent = malebias * 100/total, femalepercent = femalebias *
            100/total)


dat_p1 <- gather(as.data.frame(dat_p1), key = sex, value = percent, malepercent:femalepercent,
    factor_key = TRUE)


dat_p1$samplesize <- with(dat_p1, ifelse(sex == "malepercent", malebias, femalebias))

# Adding All
dat_p1 %>%
    group_by(sex) %>%
    summarise(malebias = sum(malebias), femalebias = sum(femalebias), total = sum(total),
        ) -> part

part %>%
    mutate(Category = "All", sex = c("malepercent", "femalepercent"), percent = c(100 *
        (malebias[1]/total[1]), 100 * (femalebias[1]/total[1])), samplesize = c(malebias[1],
        femalebias[1])) -> part


# select(Category, malebias, femalebias, total, sex, percent, samplesize)
dat_p1 <- bind_rows(dat_p1, part)



p1 <- ggplot(dat_p1) + aes(x = Category, y = percent, fill = sex) + geom_col() +
    geom_hline(yintercept = 50, linetype = "dashed", color = "gray40") + geom_text(data = subset(dat_p1,
    samplesize != 0), aes(label = samplesize), position = position_stack(vjust = 0.5),
    color = "white", size = 3.5) + scale_fill_manual(values = colours) + theme_bw(base_size = 18) +
    theme(strip.text.y = element_text(angle = 270, size = 10, margin = margin(t = 15,
        r = 15, b = 15, l = 15)), strip.text.x = element_text(size = 12), strip.background = element_rect(colour = NULL,
        linetype = "blank", fill = "gray90"), text = element_text(size = 14), panel.spacing = unit(0.5,
        "lines"), panel.border = element_blank(), axis.line = element_line(), panel.grid.major.x = element_line(linetype = "solid",
        colour = "gray95"), panel.grid.major.y = element_line(linetype = "solid",
        colour = "gray95"), panel.grid.minor.y = element_blank(), panel.grid.minor.x = element_blank(),
        axis.title.x = element_blank(), axis.title.y = element_blank(), plot.title = element_text(size = 14),
        legend.position = "none") + coord_flip() + labs(title = "Scenario A - different slopes, \n                    same intercepts")



# sex bias in intercept parameter - scenario B
dat_p2 <- dat_int %>%
    group_by_at(vars(Category)) %>%
    summarise(malebias = sum(m_intercept > f_intercept), femalebias = sum(f_intercept >
        m_intercept), total = malebias + femalebias, malepercent = malebias * 100/total,
        femalepercent = femalebias * 100/total)

dat_p2 <- gather(as.data.frame(dat_p2), key = sex, value = percent, malepercent:femalepercent,
    factor_key = TRUE)

dat_p2$samplesize <- with(dat_p2, ifelse(sex == "malepercent", malebias, femalebias))

# addeing All
dat_p2 %>%
    group_by(sex) %>%
    summarise(malebias = sum(malebias), femalebias = sum(femalebias), total = sum(total),
        ) -> part2

part2 %>%
    mutate(Category = "All", sex = c("malepercent", "femalepercent"), percent = c(100 *
        (malebias[1]/total[1]), 100 * (femalebias[1]/total[1])), samplesize = c(malebias[1],
        femalebias[1])) -> part2


# select(Category, malebias, femalebias, total, sex, percent, samplesize)
dat_p2 <- bind_rows(dat_p2, part2)


p2 <- ggplot(dat_p2) + aes(x = Category, y = percent, fill = sex) + geom_col() +
    geom_hline(yintercept = 50, linetype = "dashed", color = "gray40") + geom_text(data = subset(dat_p2,
    samplesize != 0), aes(label = samplesize), position = position_stack(vjust = 0.5),
    color = "white", size = 3.5) + scale_fill_manual(values = colours) + theme_bw(base_size = 18) +
    theme(strip.text.y = element_text(angle = 270, size = 10, margin = margin(t = 15,
        r = 15, b = 15, l = 15)), strip.text.x = element_text(size = 12), strip.background = element_rect(colour = NULL,
        linetype = "blank", fill = "gray90"), text = element_text(size = 14), panel.spacing = unit(0.5,
        "lines"), panel.border = element_blank(), axis.line = element_line(), panel.grid.major.x = element_line(linetype = "solid",
        colour = "gray95"), panel.grid.major.y = element_line(linetype = "solid",
        color = "gray95"), panel.grid.minor.y = element_blank(), panel.grid.minor.x = element_blank(),
        axis.title.x = element_blank(), axis.title.y = element_blank(), plot.title = element_text(size = 14),
        legend.position = "none") + coord_flip() + labs(title = "Scenario B - same slopes, \n            different intercepts")


# sex bias in sig intercept and slope parameter - scenario C
dat_p3 <- dat_intSlopes %>%
    group_by_at(vars(Category)) %>%
    summarise(malebias = sum(m_intercept > f_intercept & m_slope > f_slope), mixed = sum(m_intercept >
        f_intercept & m_slope < f_slope, m_intercept < f_intercept & m_slope > f_slope),
        femalebias = sum(f_intercept > m_intercept & f_slope > m_slope), total = malebias +
            mixed + femalebias, malepercent = malebias * 100/total, mixedpercent = mixed *
            100/total, femalepercent = femalebias * 100/total)

dat_p3 <- gather(as.data.frame(dat_p3), key = sex, value = percent, malepercent:femalepercent,
    factor_key = TRUE)
dat_p3$samplesize <- with(dat_p3, ifelse(sex == "malepercent", malebias, ifelse(sex ==
    "mixedpercent", mixed, femalebias)))


# adding All
dat_p3 %>%
    group_by(sex) %>%
    summarise(malebias = sum(malebias), mixed = sum(mixed), femalebias = sum(femalebias),
        total = sum(total), ) -> part3

part3 %>%
    mutate(Category = "All", sex = c("malepercent", "mixedpercent", "femalepercent"),
        percent = c(100 * (malebias[1]/total[1]), 100 * (mixed[1]/total[1]), 100 *
            (femalebias[1]/total[1])), samplesize = c(malebias[1], mixed[1], femalebias[1])) ->
    part3


# select(Category, malebias, femalebias, total, sex, percent, samplesize)
dat_p3 <- bind_rows(dat_p3, part3)

p3 <- ggplot(dat_p3) + aes(x = Category, y = percent, fill = sex) + geom_col() +
    geom_hline(yintercept = 50, linetype = "dashed", color = "gray40") + geom_text(data = subset(dat_p3,
    samplesize != 0), aes(label = samplesize), position = position_stack(vjust = 0.5),
    color = "white", size = 3.5) + scale_fill_manual(values = colours2) + theme_bw(base_size = 18) +
    theme(strip.text.y = element_text(angle = 270, size = 10, margin = margin(t = 15,
        r = 15, b = 15, l = 15)), strip.text.x = element_text(size = 12), strip.background = element_rect(colour = NULL,
        linetype = "blank", fill = "gray90"), text = element_text(size = 14), panel.spacing = unit(0.5,
        "lines"), panel.border = element_blank(), axis.line = element_line(), panel.grid.major.x = element_line(linetype = "solid",
        colour = "gray95"), panel.grid.major.y = element_line(linetype = "solid",
        color = "gray95"), panel.grid.minor.y = element_blank(), panel.grid.minor.x = element_blank(),
        axis.title.y = element_blank(), plot.title = element_text(size = 14), legend.position = "none") +
    ylab("Percentage (%)") + coord_flip() + labs(title = "Scenario C - different slopes, \n                different intercepts")

# sex bias in sd
dat_p4 <- dat %>%
    filter(p_val_sd <= 0.05) %>%
    group_by_at(vars(Category)) %>%
    summarise(malebias = sum(m_sd > f_sd), femalebias = sum(f_sd > m_sd), total = malebias +
        femalebias, malepercent = malebias * 100/total, femalepercent = femalebias *
        100/total)


dat_p4 <- gather(as.data.frame(dat_p4), key = sex, value = percent, malepercent:femalepercent,
    factor_key = TRUE)

dat_p4$samplesize <- with(dat_p4, ifelse(sex == "malepercent", malebias, femalebias))


# addeing All
dat_p4 %>%
    group_by(sex) %>%
    summarise(malebias = sum(malebias), femalebias = sum(femalebias), total = sum(total),
        ) -> part4

part4 %>%
    mutate(Category = "All", sex = c("malepercent", "femalepercent"), percent = c(100 *
        (malebias[1]/total[1]), 100 * (femalebias[1]/total[1])), samplesize = c(malebias[1],
        femalebias[1])) -> part4


# select(Category, malebias, femalebias, total, sex, percent, samplesize)
dat_p4 <- bind_rows(dat_p4, part4)

p4 <- ggplot(dat_p4) + aes(x = Category, y = percent, fill = sex) + geom_col() +
    geom_hline(yintercept = 50, linetype = "dashed", color = "gray40") + geom_text(data = subset(dat_p4,
    samplesize != 0), aes(label = samplesize), position = position_stack(vjust = 0.5),
    color = "white", size = 3.5) + scale_fill_manual(values = colours) + theme_bw(base_size = 18) +
    theme(strip.text.y = element_text(angle = 270, size = 10, margin = margin(t = 15,
        r = 15, b = 15, l = 15)), strip.text.x = element_text(size = 12), strip.background = element_rect(colour = NULL,
        linetype = "blank", fill = "gray90"), text = element_text(size = 14), panel.spacing = unit(0.5,
        "lines"), panel.border = element_blank(), axis.line = element_line(), panel.grid.major.x = element_line(linetype = "solid",
        colour = "gray95"), panel.grid.major.y = element_line(linetype = "solid",
        color = "gray95"), panel.grid.minor.y = element_blank(), panel.grid.minor.x = element_blank(),
        axis.title.y = element_blank(), plot.title = element_text(size = 14), legend.position = "none") +
    ylab("Percentage (%)") + coord_flip() + labs(title = "Statistically significant\nsex difference in residual SDs")

# putting all together
(p1 + p2)/(p3 + p4) + plot_annotation(tag_levels = "A")

# note that the key was inserted using Illustrator

Fig. 2 Sex biases for mice phenotypic traits arrange in functional groups (see the main tex)

Functional categories in the dataset

par(mar = c(6, 6, 6, 6))
v = c(85, 39, 21, 31, 25, 111, 8, 22, 33)
t = c("behaviour", "eye", "hearing", "heart", "hematology", "immunology", "metabolism",
    "morphology", "physiology")
d = data.frame(trait = t, n = v)
d = d[order(d$n, decreasing = TRUE), ]
barplot(height = d$n, names.arg = d$trait, las = 3, col = seq_along(d$trait) + 1,
    ylim = c(0, 80))

Fig. S1 The number of traits in each of 9 functional categories.

Extra: Comparing models with and wihout substrains

# loading data
dat_short <- read_csv(here("data/data_comparision.csv"))


dat_short %>%
    group_by(parameter_group) %>%
    mutate(count = n()) -> dat_short
#
dat_short1 <- dat_short[which(dat_short$count == 1), ]
# dim(dat1)

# taking out independent traits
dat_short2 <- dat_short[-which(dat_short$count == 1), ]

# nesting data into a lot of data sets and apply p_mod function
n_dat_short2 <- dat_short2 %>%
    group_by(parameter_group) %>%
    nest()

# function to get merged p value for comparing models
p_comp <- function(data) {

    len <- dim(data)[1]
    Rmat <- matrix(0.8, nrow = len, ncol = len)
    diag(Rmat) <- 1

    p_mod <- fisher(data$p_value, adjust = "liji", R = Rmat)
    p <- p_mod$p
    return(p)

}

# merged data
m_dat_short2 <- n_dat_short2 %>%
    mutate(merged_p_comp = map_dbl(data, p_comp))

# short dataset
dat_sig <- dat_short %>%
    filter(p_value <= 0.05)

# 155 out of 248 traits sig comparisons
nrow(dat_short)
## [1] 248
nrow(dat_sig)
## [1] 155
# reduced dataset
dat_sig1 <- dat_short1 %>%
    filter(p_value <= 0.05)

dat_sig2 <- m_dat_short2 %>%
    filter(merged_p_comp <= 0.05)

# 98 out of 154 traits sig comparisons
nrow(dat_short1) + nrow(m_dat_short2)
## [1] 154
nrow(dat_sig1) + nrow(dat_sig2)
## [1] 98

Meta-analysis

Calculating absolute effect sizes

Here we convert our effect sizes to absolute values assuming folded normal distributions.

## for folded normal distribution see:
## https://en.wikipedia.org/wiki/Folded_normal_distribution

# folded mean
folded_mu <- function(mean, variance) {
    mu <- mean
    sigma <- sqrt(variance)
    fold_mu <- sigma * sqrt(2/pi) * exp((-mu^2)/(2 * sigma^2)) + mu * (1 - 2 * pnorm(-mu/sigma))
    fold_mu
}

# folded variance
folded_v <- function(mean, variance) {
    mu <- mean
    sigma <- sqrt(variance)
    fold_mu <- sigma * sqrt(2/pi) * exp((-mu^2)/(2 * sigma^2)) + mu * (1 - 2 * pnorm(-mu/sigma))
    fold_se <- sqrt(mu^2 + sigma^2 - fold_mu^2)
    # adding se to make bigger mean
    fold_v <- fold_se^2
    fold_v
}


dat <- dat %>%
    mutate(abs_int = folded_mu(fm_diff_int, fm_diff_int_se^2), abs_slope = folded_mu(fm_diff_slope,
        fm_diff_slope_se^2), abs_lnVR = folded_mu(lnVR, VlnVR), V_abs_int = folded_v(fm_diff_int,
        fm_diff_int_se^2), V_abs_slope = folded_v(fm_diff_slope, fm_diff_slope_se^2),
        V_abs_lnVR = folded_v(lnVR, VlnVR), total_n = f_n + m_n)

Comparing sex difference in intercepts

This is a meta-analytic model of sex differences in intercepts (mean traits). We use the rubust function calculates to see whether our results form the model is robust (consistent).

modelia <- rma.mv(yi = abs_int, V = V_abs_int, random = list(~1 | Category, ~1 |
    parameter_group, ~1 | obs), data = dat)
summary(modelia)
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc  ​ 
##  296.4722  -592.9444  -584.9444  -569.3779  -584.8324   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0011  0.0327      9     no         Category 
## sigma^2.2  0.0046  0.0676    219     no  parameter_group 
## sigma^2.3  0.0044  0.0663    363     no              obs 
## 
## Test for Heterogeneity:
## Q(df = 362) = 53989.7808, p-val < .0001
## 
## Model Results:
## 
## estimate      se    zval    pval   ci.lb   ci.ub     ​ 
##   0.0895  0.0132  6.7869  <.0001  0.0636  0.1153  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# robust variance estimator
robust(modelia, cluster = dat$parameter_group)
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0011  0.0327      9     no         Category 
## sigma^2.2  0.0046  0.0676    219     no  parameter_group 
## sigma^2.3  0.0044  0.0663    363     no              obs 
## 
## Test for Heterogeneity:
## Q(df = 362) = 53989.7808, p-val < .0001
## 
## Number of estimates:   363
## Number of clusters:    219
## Estimates per cluster: 1-11 (mean: 1.66, median: 1)
## 
## Model Results:
## 
## estimate     se¹    tval¹  df¹   pval¹  ci.lb¹  ci.ub¹     ​ 
##   0.0895  0.0071  12.6879  218  <.0001  0.0756  0.1033  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 1) results based on cluster-robust inference (var-cov estimator: CR1,
##    approx. t-test and confidence interval, dfs = residual method)
# I2 (heterogeneity)
i2_ml(modelia)
##           I2_Total        I2_Category I2_parameter_group             I2_obs 
##           99.99947           10.66137           45.50901           43.82909

This is a meta-regression model of sex differences in intercepts (mean traits) with a functional category as a moderator. We used the rubust function calculates to see whether our results form the model is robust (consistent).

model1a <- rma.mv(yi = abs_int, V = V_abs_int, mod = ~Category - 1, random = list(~1 |
    parameter_group, ~1 | obs), data = dat)
summary(model1a)
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc  ​ 
##  295.4703  -590.9406  -568.9406  -526.3783  -568.1687   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0047  0.0686    219     no  parameter_group 
## sigma^2.2  0.0044  0.0662    363     no              obs 
## 
## Test for Residual Heterogeneity:
## QE(df = 354) = 44316.0433, p-val < .0001
## 
## Test of Moderators (coefficients 1:9):
## QM(df = 9) = 261.7204, p-val < .0001
## 
## Model Results:
## 
##                     estimate      se     zval    pval    ci.lb   ci.ub     ​ 
## CategoryBehaviour     0.1405  0.0130  10.8057  <.0001   0.1150  0.1660  *** 
## CategoryEye           0.0407  0.0200   2.0359  0.0418   0.0015  0.0799    * 
## CategoryHearing       0.0492  0.0424   1.1602  0.2460  -0.0339  0.1324      
## CategoryHeart         0.0642  0.0179   3.5836  0.0003   0.0291  0.0992  *** 
## CategoryHematology    0.0906  0.0228   3.9679  <.0001   0.0458  0.1353  *** 
## CategoryImmunology    0.1255  0.0168   7.4585  <.0001   0.0926  0.1585  *** 
## CategoryMetabolism    0.1132  0.0342   3.3097  0.0009   0.0461  0.1802  *** 
## CategoryMorphology    0.0469  0.0223   2.0997  0.0358   0.0031  0.0907    * 
## CategoryPhysiology    0.1085  0.0167   6.5152  <.0001   0.0759  0.1412  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
robust(model1a, cluster = dat$parameter_group)
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0047  0.0686    219     no  parameter_group 
## sigma^2.2  0.0044  0.0662    363     no              obs 
## 
## Test for Residual Heterogeneity:
## QE(df = 354) = 44316.0433, p-val < .0001
## 
## Number of estimates:   363
## Number of clusters:    219
## Estimates per cluster: 1-11 (mean: 1.66, median: 1)
## 
## Test of Moderators (coefficients 1:9):¹
## F(df1 = 9, df2 = 210) = 28.9630, p-val < .0001
## 
## Model Results:
## 
##                     estimate     se¹    tval¹  df¹   pval¹   ci.lb¹  ci.ub¹​ 
## CategoryBehaviour     0.1405  0.0139  10.1079  210  <.0001   0.1131  0.1679 
## CategoryEye           0.0407  0.0108   3.7664  210  0.0002   0.0194  0.0620 
## CategoryHearing       0.0492  0.0264   1.8678  210  0.0632  -0.0027  0.1012 
## CategoryHeart         0.0642  0.0201   3.1883  210  0.0016   0.0245  0.1038 
## CategoryHematology    0.0906  0.0180   5.0232  210  <.0001   0.0550  0.1261 
## CategoryImmunology    0.1255  0.0153   8.2124  210  <.0001   0.0954  0.1557 
## CategoryMetabolism    0.1132  0.0419   2.7023  210  0.0074   0.0306  0.1957 
## CategoryMorphology    0.0469  0.0158   2.9675  210  0.0034   0.0157  0.0781 
## CategoryPhysiology    0.1085  0.0206   5.2751  210  <.0001   0.0680  0.1491 
##  
## CategoryBehaviour   *** 
## CategoryEye         *** 
## CategoryHearing       . 
## CategoryHeart        ** 
## CategoryHematology  *** 
## CategoryImmunology  *** 
## CategoryMetabolism   ** 
## CategoryMorphology   ** 
## CategoryPhysiology  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 1) results based on cluster-robust inference (var-cov estimator: CR1,
##    approx. t/F-tests and confidence intervals, dfs = residual method)
# R2 (variance explained)
r2_ml(model1a)
##    R2_marginal R2_conditional 
##      0.1326077      0.5820628

Comparing sex difference in slopes

This is a meta-analytic model of sex differences in slopes. We used the rubust function calculates to see whether our results form the model is robust (consistent).

modelsa <- rma.mv(yi = abs_slope, V = V_abs_slope, random = list(~1 | Category, ~1 |
    parameter_group, ~1 | obs), data = dat)
summary(modelsa)  # not sig this means sometimes male is high other times female has steaper slops
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
##     logLik    Deviance         AIC         BIC        AICc  ​ 
##   833.1152  -1666.2303  -1658.2303  -1642.6638  -1658.1183   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0001  0.0072      9     no         Category 
## sigma^2.2  0.0002  0.0149    219     no  parameter_group 
## sigma^2.3  0.0000  0.0000    363     no              obs 
## 
## Test for Heterogeneity:
## Q(df = 362) = 2886.1197, p-val < .0001
## 
## Model Results:
## 
## estimate      se    zval    pval   ci.lb   ci.ub     ​ 
##   0.0181  0.0028  6.4138  <.0001  0.0126  0.0236  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
robust(modelsa, cluster = dat$parameter_group)
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0001  0.0072      9     no         Category 
## sigma^2.2  0.0002  0.0149    219     no  parameter_group 
## sigma^2.3  0.0000  0.0000    363     no              obs 
## 
## Test for Heterogeneity:
## Q(df = 362) = 2886.1197, p-val < .0001
## 
## Number of estimates:   363
## Number of clusters:    219
## Estimates per cluster: 1-11 (mean: 1.66, median: 1)
## 
## Model Results:
## 
## estimate     se¹    tval¹  df¹   pval¹  ci.lb¹  ci.ub¹     ​ 
##   0.0181  0.0014  12.9962  218  <.0001  0.0154  0.0209  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 1) results based on cluster-robust inference (var-cov estimator: CR1,
##    approx. t-test and confidence interval, dfs = residual method)
# I2 (heterogeneity)
i2_ml(modelia)
##           I2_Total        I2_Category I2_parameter_group             I2_obs 
##           99.99947           10.66137           45.50901           43.82909

This is a meta-regression model of sex differences in slopes with a functional category as a moderator. We use the rubust function calculates to see whether our results form the model is robust (consistent).

model2a <- rma.mv(yi = abs_slope, V = V_abs_slope, mod = ~Category - 1, random = list(~1 |
    parameter_group, ~1 | obs), data = dat)
summary(model2a)
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
##     logLik    Deviance         AIC         BIC        AICc  ​ 
##   820.0868  -1640.1737  -1618.1737  -1575.6114  -1617.4017   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0002  0.0150    219     no  parameter_group 
## sigma^2.2  0.0000  0.0000    363     no              obs 
## 
## Test for Residual Heterogeneity:
## QE(df = 354) = 2375.7973, p-val < .0001
## 
## Test of Moderators (coefficients 1:9):
## QM(df = 9) = 227.8660, p-val < .0001
## 
## Model Results:
## 
##                     estimate      se    zval    pval    ci.lb   ci.ub     ​ 
## CategoryBehaviour     0.0217  0.0030  7.2175  <.0001   0.0158  0.0275  *** 
## CategoryEye           0.0169  0.0043  3.9154  <.0001   0.0084  0.0254  *** 
## CategoryHearing       0.0086  0.0088  0.9838  0.3252  -0.0086  0.0258      
## CategoryHeart         0.0118  0.0032  3.6769  0.0002   0.0055  0.0180  *** 
## CategoryHematology    0.0141  0.0031  4.5811  <.0001   0.0081  0.0202  *** 
## CategoryImmunology    0.0373  0.0044  8.5081  <.0001   0.0287  0.0460  *** 
## CategoryMetabolism    0.0214  0.0061  3.5218  0.0004   0.0095  0.0333  *** 
## CategoryMorphology    0.0098  0.0038  2.6150  0.0089   0.0025  0.0172   ** 
## CategoryPhysiology    0.0193  0.0026  7.3198  <.0001   0.0141  0.0245  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
robust(model2a, cluster = dat$parameter_group)
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0002  0.0150    219     no  parameter_group 
## sigma^2.2  0.0000  0.0000    363     no              obs 
## 
## Test for Residual Heterogeneity:
## QE(df = 354) = 2375.7973, p-val < .0001
## 
## Number of estimates:   363
## Number of clusters:    219
## Estimates per cluster: 1-11 (mean: 1.66, median: 1)
## 
## Test of Moderators (coefficients 1:9):¹
## F(df1 = 9, df2 = 210) = 31.7213, p-val < .0001
## 
## Model Results:
## 
##                     estimate     se¹   tval¹  df¹   pval¹  ci.lb¹  ci.ub¹     ​ 
## CategoryBehaviour     0.0217  0.0030  7.3247  210  <.0001  0.0158  0.0275  *** 
## CategoryEye           0.0169  0.0030  5.7321  210  <.0001  0.0111  0.0227  *** 
## CategoryHearing       0.0086  0.0030  2.8515  210  0.0048  0.0027  0.0146   ** 
## CategoryHeart         0.0118  0.0016  7.3875  210  <.0001  0.0086  0.0149  *** 
## CategoryHematology    0.0141  0.0027  5.2585  210  <.0001  0.0088  0.0194  *** 
## CategoryImmunology    0.0373  0.0041  9.1947  210  <.0001  0.0293  0.0454  *** 
## CategoryMetabolism    0.0214  0.0055  3.8664  210  0.0001  0.0105  0.0323  *** 
## CategoryMorphology    0.0098  0.0043  2.3101  210  0.0219  0.0014  0.0182    * 
## CategoryPhysiology    0.0193  0.0035  5.5593  210  <.0001  0.0125  0.0262  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 1) results based on cluster-robust inference (var-cov estimator: CR1,
##    approx. t/F-tests and confidence intervals, dfs = residual method)
# R2 (variance explained)
r2_ml(model2a)
##    R2_marginal R2_conditional 
##      0.3072461      1.0000000

Comparing sex difference in resdiaul SDs

This is a meta-analytic model of sex differences in residual SDs. We use the rubust function calculates to see whether our results form the model is robust (consistent).

modelsda <- rma.mv(yi = abs_lnVR, V = V_abs_lnVR, random = list(~1 | Category, ~1 |
    parameter_group, ~1 | obs), data = dat)
summary(modelsda)
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc  ​ 
##  166.4576  -332.9152  -324.9152  -309.3487  -324.8032   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0040  0.0633      9     no         Category 
## sigma^2.2  0.0108  0.1041    219     no  parameter_group 
## sigma^2.3  0.0103  0.1015    363     no              obs 
## 
## Test for Heterogeneity:
## Q(df = 362) = 15825.0243, p-val < .0001
## 
## Model Results:
## 
## estimate      se    zval    pval   ci.lb   ci.ub     ​ 
##   0.1526  0.0241  6.3401  <.0001  0.1054  0.1998  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
robust(modelsda, cluster = dat$parameter_group)
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0040  0.0633      9     no         Category 
## sigma^2.2  0.0108  0.1041    219     no  parameter_group 
## sigma^2.3  0.0103  0.1015    363     no              obs 
## 
## Test for Heterogeneity:
## Q(df = 362) = 15825.0243, p-val < .0001
## 
## Number of estimates:   363
## Number of clusters:    219
## Estimates per cluster: 1-11 (mean: 1.66, median: 1)
## 
## Model Results:
## 
## estimate     se¹    tval¹  df¹   pval¹  ci.lb¹  ci.ub¹     ​ 
##   0.1526  0.0131  11.6825  218  <.0001  0.1269  0.1783  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 1) results based on cluster-robust inference (var-cov estimator: CR1,
##    approx. t-test and confidence interval, dfs = residual method)
# I2 (heterogeneity)
i2_ml(modelsda)
##           I2_Total        I2_Category I2_parameter_group             I2_obs 
##           98.83925           15.72988           42.60328           40.50609

This is a meta-regression model of sex differences in residual SDs with a functional category as a moderator. We use the rubust function calculates to see whether our results form the model is robust (consistent).

# meta-regression
model3a <- rma.mv(yi = abs_lnVR, V = V_abs_lnVR, mod = ~Category - 1, random = list(~1 |
    parameter_group, ~1 | obs), data = dat)
summary(model3a)
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc  ​ 
##  170.3852  -340.7703  -318.7703  -276.2081  -317.9984   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0112  0.1058    219     no  parameter_group 
## sigma^2.2  0.0102  0.1011    363     no              obs 
## 
## Test for Residual Heterogeneity:
## QE(df = 354) = 13783.4544, p-val < .0001
## 
## Test of Moderators (coefficients 1:9):
## QM(df = 9) = 277.5835, p-val < .0001
## 
## Model Results:
## 
##                     estimate      se    zval    pval    ci.lb   ci.ub     ​ 
## CategoryBehaviour     0.1121  0.0176  6.3763  <.0001   0.0776  0.1465  *** 
## CategoryEye           0.2923  0.0330  8.8561  <.0001   0.2276  0.3570  *** 
## CategoryHearing       0.0877  0.0653  1.3423  0.1795  -0.0404  0.2157      
## CategoryHeart         0.0915  0.0272  3.3612  0.0008   0.0381  0.1448  *** 
## CategoryHematology    0.1557  0.0351  4.4373  <.0001   0.0869  0.2245  *** 
## CategoryImmunology    0.2336  0.0253  9.2207  <.0001   0.1840  0.2833  *** 
## CategoryMetabolism    0.1147  0.0521  2.2016  0.0277   0.0126  0.2168    * 
## CategoryMorphology    0.1602  0.0344  4.6576  <.0001   0.0928  0.2276  *** 
## CategoryPhysiology    0.1012  0.0255  3.9693  <.0001   0.0512  0.1512  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# R2 (variance explained)
r2_ml(model3a)
##    R2_marginal R2_conditional 
##      0.1888550      0.6128453

Comparing model fits

This is a meta-analytic model of Zr (transformed model fits). We use the rubust function calculates to see whether our results form the model is robust (consistent).

modelr0 <- rma.mv(yi = Zr, V = VZr, random = list(~1 | Category, ~1 | parameter_group,
    ~1 | obs), data = dat)
summary(modelr0)
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc  ​ 
##   90.2679  -180.5357  -172.5357  -156.9691  -172.4237   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0026  0.0507      9     no         Category 
## sigma^2.2  0.0152  0.1231    219     no  parameter_group 
## sigma^2.3  0.0212  0.1457    363     no              obs 
## 
## Test for Heterogeneity:
## Q(df = 362) = 69539.1184, p-val < .0001
## 
## Model Results:
## 
## estimate      se    zval    pval   ci.lb   ci.ub     ​ 
##   0.1634  0.0219  7.4548  <.0001  0.1205  0.2064  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
robust(modelr0, cluster = dat$parameter_group)
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0026  0.0507      9     no         Category 
## sigma^2.2  0.0152  0.1231    219     no  parameter_group 
## sigma^2.3  0.0212  0.1457    363     no              obs 
## 
## Test for Heterogeneity:
## Q(df = 362) = 69539.1184, p-val < .0001
## 
## Number of estimates:   363
## Number of clusters:    219
## Estimates per cluster: 1-11 (mean: 1.66, median: 1)
## 
## Model Results:
## 
## estimate     se¹    tval¹  df¹   pval¹  ci.lb¹  ci.ub¹     ​ 
##   0.1634  0.0152  10.7662  218  <.0001  0.1335  0.1934  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 1) results based on cluster-robust inference (var-cov estimator: CR1,
##    approx. t-test and confidence interval, dfs = residual method)
# funnel(modelr0)
i2_ml(modelr0)
##           I2_Total        I2_Category I2_parameter_group             I2_obs 
##           99.55208            6.56152           38.74789           54.24266

This is a meta-regression model of Zr (transformed model fits). with a functional category as a moderator. We use the rubust function calculates to see whether our results form the model is robust (consistent).

# meta-regression
modelr1 <- rma.mv(yi = Zr, mod = ~Category - 1, V = VZr, random = list(~1 | parameter_group,
    ~1 | obs), data = dat)

summary(modelr1)
## 
## Multivariate Meta-Analysis Model (k = 363; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc  ​ 
##   93.8964  -187.7928  -165.7928  -123.2305  -165.0208   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed           factor 
## sigma^2.1  0.0149  0.1222    219     no  parameter_group 
## sigma^2.2  0.0213  0.1461    363     no              obs 
## 
## Test for Residual Heterogeneity:
## QE(df = 354) = 56736.3506, p-val < .0001
## 
## Test of Moderators (coefficients 1:9):
## QM(df = 9) = 200.8114, p-val < .0001
## 
## Model Results:
## 
##                     estimate      se    zval    pval    ci.lb   ci.ub     ​ 
## CategoryBehaviour     0.1550  0.0222  6.9908  <.0001   0.1115  0.1984  *** 
## CategoryEye           0.1778  0.0390  4.5618  <.0001   0.1014  0.2541  *** 
## CategoryHearing       0.0415  0.0779  0.5330  0.5940  -0.1112  0.1943      
## CategoryHeart         0.1707  0.0351  4.8658  <.0001   0.1019  0.2395  *** 
## CategoryHematology    0.1047  0.0447  2.3426  0.0192   0.0171  0.1924    * 
## CategoryImmunology    0.0845  0.0305  2.7650  0.0057   0.0246  0.1443   ** 
## CategoryMetabolism    0.1967  0.0675  2.9158  0.0035   0.0645  0.3289   ** 
## CategoryMorphology    0.2743  0.0441  6.2137  <.0001   0.1877  0.3608  *** 
## CategoryPhysiology    0.2283  0.0329  6.9303  <.0001   0.1637  0.2928  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# R2 (variance explained)
r2_ml(modelr1)
##    R2_marginal R2_conditional 
##     0.09049896     0.46492272

Obtaining correlations among intercepts, slopes, SDs and model fits

# quad-variate model

mod_lnsd <- bf(log(abs_lnVR) | se(sqrt(V_abs_lnVR)/abs_lnVR) ~ -1 + Category + (1 |
    q | parameter_group))
mod_lnslp <- bf(log(abs_slope) | se(sqrt(V_abs_slope)/abs_slope) ~ -1 + Category +
    (1 | q | parameter_group))
mod_lnint <- bf(log(abs_int) | se(sqrt(V_abs_int)/abs_int) ~ -1 + Category + (1 |
    q | parameter_group))
mod_lnzr <- bf(log(Zr) | se(sqrt(VZr)/Zr) ~ -1 + Category + (1 | q | parameter_group))

fit_4b <- brm(mod_lnsd + mod_lnslp + mod_lnint + mod_lnzr, data = dat, chains = 2,
    cores = 2, iter = 4000, warmup = 1000, backend = "cmdstanr")

summary(fit_4b)

# saving the model
saveRDS(fit_4b, file = here("data", "fit_4b.rds"))
##  Family: MV(gaussian, gaussian, gaussian, gaussian) 
##   Links: mu = identity; sigma = identity
##          mu = identity; sigma = identity
##          mu = identity; sigma = identity
##          mu = identity; sigma = identity 
## Formula: log(abs_lnVR) | se(sqrt(V_abs_lnVR)/abs_lnVR) ~ -1 + Category + (1 | q | parameter_group) 
##          log(abs_slope) | se(sqrt(V_abs_slope)/abs_slope) ~ -1 + Category + (1 | q | parameter_group) 
##          log(abs_int) | se(sqrt(V_abs_int)/abs_int) ~ -1 + Category + (1 | q | parameter_group) 
##          log(Zr) | se(sqrt(VZr)/Zr) ~ -1 + Category + (1 | q | parameter_group) 
##    Data: dat (Number of observations: 363) 
##   Draws: 2 chains, each with iter = 4000; warmup = 1000; thin = 1;
##          total post-warmup draws = 6000
## 
## Group-Level Effects: 
## ~parameter_group (Number of levels: 219) 
##                                                 Estimate Est.Error l-95% CI
## sd(logabslnVR_Intercept)                            0.81      0.05     0.73
## sd(logabsslope_Intercept)                           1.23      0.07     1.09
## sd(logabsint_Intercept)                             1.29      0.07     1.17
## sd(logZr_Intercept)                                 0.96      0.05     0.86
## cor(logabslnVR_Intercept,logabsslope_Intercept)     0.14      0.08    -0.01
## cor(logabslnVR_Intercept,logabsint_Intercept)       0.07      0.08    -0.08
## cor(logabsslope_Intercept,logabsint_Intercept)      0.82      0.03     0.76
## cor(logabslnVR_Intercept,logZr_Intercept)           0.18      0.08     0.02
## cor(logabsslope_Intercept,logZr_Intercept)          0.37      0.07     0.23
## cor(logabsint_Intercept,logZr_Intercept)            0.53      0.06     0.41
##                                                 u-95% CI Rhat Bulk_ESS Tail_ESS
## sd(logabslnVR_Intercept)                            0.91 1.00      988     1836
## sd(logabsslope_Intercept)                           1.37 1.00     1115     2274
## sd(logabsint_Intercept)                             1.44 1.00     1349     2396
## sd(logZr_Intercept)                                 1.07 1.00      963     1706
## cor(logabslnVR_Intercept,logabsslope_Intercept)     0.30 1.00      856     1500
## cor(logabslnVR_Intercept,logabsint_Intercept)       0.22 1.00      796     1741
## cor(logabsslope_Intercept,logabsint_Intercept)      0.88 1.00     1215     1951
## cor(logabslnVR_Intercept,logZr_Intercept)           0.33 1.00      617     1390
## cor(logabsslope_Intercept,logZr_Intercept)          0.51 1.00      503      931
## cor(logabsint_Intercept,logZr_Intercept)            0.63 1.00      815     1225
## 
## Population-Level Effects: 
##                                Estimate Est.Error l-95% CI u-95% CI Rhat
## logabslnVR_CategoryBehaviour      -2.28      0.11    -2.51    -2.05 1.01
## logabslnVR_CategoryEye            -1.31      0.20    -1.70    -0.91 1.00
## logabslnVR_CategoryHearing        -2.01      0.46    -2.91    -1.09 1.00
## logabslnVR_CategoryHeart          -2.61      0.16    -2.93    -2.30 1.00
## logabslnVR_CategoryHematology     -2.21      0.22    -2.63    -1.75 1.00
## logabslnVR_CategoryImmunology     -1.45      0.16    -1.77    -1.15 1.00
## logabslnVR_CategoryMetabolism     -2.71      0.31    -3.31    -2.08 1.00
## logabslnVR_CategoryMorphology     -2.27      0.22    -2.69    -1.83 1.00
## logabslnVR_CategoryPhysiology     -2.49      0.16    -2.80    -2.19 1.00
## logabsslope_CategoryBehaviour     -2.93      0.16    -3.25    -2.61 1.00
## logabsslope_CategoryEye           -3.88      0.30    -4.48    -3.30 1.00
## logabsslope_CategoryHearing       -4.63      0.73    -6.08    -3.18 1.00
## logabsslope_CategoryHeart         -4.31      0.24    -4.79    -3.84 1.00
## logabsslope_CategoryHematology    -4.80      0.27    -5.36    -4.29 1.00
## logabsslope_CategoryImmunology    -2.93      0.26    -3.43    -2.43 1.00
## logabsslope_CategoryMetabolism    -3.79      0.45    -4.68    -2.89 1.00
## logabsslope_CategoryMorphology    -5.95      0.32    -6.58    -5.31 1.01
## logabsslope_CategoryPhysiology    -4.07      0.21    -4.47    -3.65 1.01
## logabsint_CategoryBehaviour       -1.96      0.16    -2.28    -1.65 1.00
## logabsint_CategoryEye             -3.53      0.32    -4.16    -2.89 1.00
## logabsint_CategoryHearing         -3.20      0.75    -4.64    -1.71 1.00
## logabsint_CategoryHeart           -3.50      0.25    -4.00    -2.99 1.00
## logabsint_CategoryHematology      -3.23      0.21    -3.64    -2.82 1.01
## logabsint_CategoryImmunology      -2.04      0.26    -2.56    -1.54 1.00
## logabsint_CategoryMetabolism      -2.64      0.46    -3.53    -1.75 1.00
## logabsint_CategoryMorphology      -4.63      0.33    -5.26    -3.99 1.01
## logabsint_CategoryPhysiology      -2.56      0.19    -2.94    -2.18 1.01
## logZr_CategoryBehaviour           -2.07      0.12    -2.32    -1.84 1.00
## logZr_CategoryEye                 -1.77      0.25    -2.24    -1.29 1.00
## logZr_CategoryHearing             -2.92      0.55    -3.98    -1.84 1.00
## logZr_CategoryHeart               -2.41      0.19    -2.79    -2.05 1.00
## logZr_CategoryHematology          -3.17      0.16    -3.48    -2.86 1.00
## logZr_CategoryImmunology          -2.35      0.20    -2.75    -1.94 1.00
## logZr_CategoryMetabolism          -1.95      0.36    -2.64    -1.25 1.00
## logZr_CategoryMorphology          -2.16      0.25    -2.64    -1.68 1.00
## logZr_CategoryPhysiology          -1.44      0.15    -1.73    -1.14 1.00
##                                Bulk_ESS Tail_ESS
## logabslnVR_CategoryBehaviour        563     1185
## logabslnVR_CategoryEye              809     1526
## logabslnVR_CategoryHearing         2158     3007
## logabslnVR_CategoryHeart            832     1602
## logabslnVR_CategoryHematology       577     1331
## logabslnVR_CategoryImmunology       532     1077
## logabslnVR_CategoryMetabolism      1455     2060
## logabslnVR_CategoryMorphology       664     1363
## logabslnVR_CategoryPhysiology       551     1195
## logabsslope_CategoryBehaviour      1138     1995
## logabsslope_CategoryEye            1003     1943
## logabsslope_CategoryHearing        1555     2524
## logabsslope_CategoryHeart           999     1936
## logabsslope_CategoryHematology      591     1278
## logabsslope_CategoryImmunology      872     1550
## logabsslope_CategoryMetabolism     1294     2212
## logabsslope_CategoryMorphology      835     1640
## logabsslope_CategoryPhysiology      585     1293
## logabsint_CategoryBehaviour        1219     1879
## logabsint_CategoryEye              1156     1903
## logabsint_CategoryHearing          1590     2701
## logabsint_CategoryHeart            1042     1604
## logabsint_CategoryHematology        634     1580
## logabsint_CategoryImmunology        931     1710
## logabsint_CategoryMetabolism       1378     2387
## logabsint_CategoryMorphology        746     1594
## logabsint_CategoryPhysiology        506     1230
## logZr_CategoryBehaviour            1066     1869
## logZr_CategoryEye                  1261     2115
## logZr_CategoryHearing              1715     2789
## logZr_CategoryHeart                 997     1928
## logZr_CategoryHematology            551     1351
## logZr_CategoryImmunology            995     1766
## logZr_CategoryMetabolism           1291     2289
## logZr_CategoryMorphology            957     1880
## logZr_CategoryPhysiology            456     1070
## 
## Family Specific Parameters: 
##                   Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## sigma_logabslnVR      0.00      0.00     0.00     0.00   NA       NA       NA
## sigma_logabsslope     0.00      0.00     0.00     0.00   NA       NA       NA
## sigma_logabsint       0.00      0.00     0.00     0.00   NA       NA       NA
## sigma_logZr           0.00      0.00     0.00     0.00   NA       NA       NA
## 
## Residual Correlations: 
##                                Estimate Est.Error l-95% CI u-95% CI Rhat
## rescor(logabslnVR,logabsslope)     0.09      0.04     0.01     0.16 1.00
## rescor(logabslnVR,logabsint)       0.04      0.03    -0.01     0.10 1.00
## rescor(logabsslope,logabsint)      0.27      0.03     0.20     0.33 1.00
## rescor(logabslnVR,logZr)           0.00      0.01    -0.02     0.03 1.00
## rescor(logabsslope,logZr)         -0.00      0.01    -0.02     0.02 1.00
## rescor(logabsint,logZr)            0.06      0.01     0.04     0.09 1.00
##                                Bulk_ESS Tail_ESS
## rescor(logabslnVR,logabsslope)     6002     5308
## rescor(logabslnVR,logabsint)       7519     4910
## rescor(logabsslope,logabsint)      6308     4367
## rescor(logabslnVR,logZr)           7879     4817
## rescor(logabsslope,logZr)          7632     4689
## rescor(logabsint,logZr)            8399     4324
## 
## Draws were sampled using sample(hmc). For each parameter, Bulk_ESS
## and Tail_ESS are effective sample size measures, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).

Creating Figure 3

# colour-blind freindly colour
cbpl <- c("#E69F00", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7", "#56B4E9",
    "#AA4499", "#DDCC77")

point.size = 2
branch.size = 3.5

# intercept meta-analysis
p1 <- orchard_plot2(modelia, mod = "Int", xlab = "Absolute difference in standardized intercepts  (F-M)",
    angle = 45, point.size = point.size, N = dat$total_n, legend.on = TRUE, branch.size = branch.size,
    ) + scale_y_discrete(labels = "Overall") + scale_fill_manual(values = "#999999") +
    scale_colour_manual(values = "#999999")  #+
# xlim(c(-0.5, 1.5))

# intercept meta-regression
p2 <- orchard_plot2(model1a, mod = "Category", xlab = "Absolute difference in standardized intercepts  (F-M)",
    angle = 45, point.size = point.size, N = dat$total_n, legend.on = TRUE, branch.size = branch.size,
    ) + scale_fill_manual(values = cbpl) + scale_colour_manual(values = cbpl)  #+
# xlim(c(-0.5, 1.5))

# slope meta-analysis
p3 <- orchard_plot2(modelsa, mod = "Int", xlab = "Absolute difference in standardized slopes (F-M)",
    angle = 45, point.size = point.size, k = F, N = dat$total_n, legend.on = FALSE,
    branch.size = branch.size, ) + scale_y_discrete(labels = "") + scale_fill_manual(values = "#999999") +
    scale_colour_manual(values = "#999999")  #+
# xlim(c(-1.5, 10))

# slope meta-regression
p4 <- orchard_plot2(model2a, mod = "Category", xlab = "Absolute difference in standardized slopes (F-M)",
    angle = 45, cb = F, point.size = point.size, k = F, N = dat$total_n, legend.on = FALSE,
    branch.size = branch.size, ) + scale_y_discrete(labels = rep("", 9)) + scale_fill_manual(values = cbpl) +
    scale_colour_manual(values = cbpl)  #+
# xlim(c(-1.5, 10))

# SD meta-analysis
p5 <- orchard_plot2(modelsda, mod = "Category", xlab = "Absolute relative difference in SD (lnVR: F/M)",
    angle = 45, point.size = point.size, k = F, N = dat$total_n, legend.on = FALSE,
    branch.size = branch.size, ) + scale_y_discrete(labels = "") + scale_fill_manual(values = "#999999") +
    scale_colour_manual(values = "#999999")  #+
# xlim(c(-0.2, 1.9))

# SD meta-regression
p6 <- orchard_plot2(model3a, mod = "Category", xlab = "Absolute relative difference in SD (lnVR: F/M)",
    angle = 45, cb = F, point.size = point.size, k = F, N = dat$total_n, legend.on = FALSE,
    branch.size = branch.size, ) + scale_y_discrete(labels = rep("", 9)) + scale_fill_manual(values = cbpl) +
    scale_colour_manual(values = cbpl)  #+
# xlim(c(-0.2, 1.9))


# putting it together
(p1 | p3 | p5)/(p2 | p4 | p6) + plot_layout(heights = c(1, 3)) + plot_annotation(tag_levels = "A")

Fig. 3 Orchard plots illustrating results of multilevel meta-analyses (see the main text)

Creating Figure S1

# meta-analysis with model fit
t1 <- orchard_plot2(modelr0, mod = "Int", xlab = "Zr (transformed variance accounted for)",
    angle = 45, point.size = point.size, branch.size = branch.size, k = F, N = dat$total_n) +
    scale_y_discrete(labels = "Overall") + scale_fill_manual(values = "#999999") +
    scale_colour_manual(values = "#999999")  #+
# xlim(c(-0.5, 1.5))

# meta-regression with model fit
t2 <- orchard_plot2(modelr1, mod = "Category", xlab = "Zr (transformed variance accounted for)",
    angle = 45, point.size = point.size, k = F, N = dat$total_n, branch.size = branch.size,
    ) + #scale_y_discrete(labels = 'Overall') + ) + #scale_y_discrete(labels =
    ) + #scale_y_discrete(labels = 'Overall') + 'Overall') +
scale_fill_manual(values = cbpl) + scale_colour_manual(values = cbpl)  #+
# xlim(c(-0.5, 1.5))

(t1)/(t2) + plot_layout(heights = c(1, 3)) + plot_annotation(tag_levels = "A")

Fig. S1 Orchard plots illustrating results of multilevel meta-analyses for Zr (model fit)

Creating Figure 4

# creating added precision

# dat %>% mutate(pre_slp_int = 1/sqrt(V_abs_int/abs_int^2 +
# V_abs_slope/abs_slope^2), pre_slp_sd = 1/sqrt(V_abs_slope/abs_slope^2 +
# V_abs_lnVR/abs_lnVR^2), pre_int_sd = 1/sqrt(V_abs_int/abs_int^2 +
# V_abs_lnVR/abs_lnVR^2) ) -> dat

# colour-blind freindly colour
cbpl <- c("#E69F00", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7", "#56B4E9",
    "#AA4499", "#DDCC77")

f1 <- ggplot(data = dat) + geom_point(aes(x = log(abs_slope), y = log(abs_int), col = Category,
    size = total_n)) + scale_fill_manual(values = cbpl) + scale_colour_manual(values = cbpl) +
    labs(x = "ln(Absolute difference in standardized slopes)", y = "ln(Absolute difference in standardized intercepts)") +
    labs(color = "Trait types", size = "Sample size (N)") + annotate(geom = "text",
    x = -10, y = -0.5, label = "r = 0.82 [0.76, 0.88]", size = 3) + theme_bw() +
    theme(legend.key.size = unit(0.5, "cm"), legend.title = element_text(size = 10)) +
    guides(col = "none")

f2 <- ggplot(data = dat) + geom_point(aes(x = log(abs_slope), y = log(abs_lnVR),
    col = Category, size = total_n)) + scale_fill_manual(values = cbpl) + scale_colour_manual(values = cbpl) +
    labs(x = "ln(Absolute difference in standardized slopes)", y = "ln(Absolute relative difference in SD)") +
    labs(color = "Trait types", size = "Sample size (N)") + annotate(geom = "text",
    x = -9.8, y = 0.5, label = "r = 0.14 [-0.01., 0.30]", size = 3) + theme_bw() +
    theme(legend.key.size = unit(0.5, "cm"), legend.title = element_text(size = 10)) +
    guides(col = "none", size = "none")
# scale_size_continuous(breaks = c(200, 2000, 20000), guide = guide_legend()) +

f3 <- ggplot(data = dat) + geom_point(aes(x = log(abs_int), y = log(abs_lnVR), col = Category,
    size = total_n)) + scale_fill_manual(values = cbpl) + scale_colour_manual(values = cbpl) +
    labs(x = "ln(Absolute difference in standardized intercepts)", y = "ln(Absolute relative difference in SD)") +
    labs(color = "Trait types", size = "Sample size (N)") + annotate(geom = "text",
    x = -9.5, y = 0.5, label = "r = 0.07 [-0.08, 0.22]", size = 3) + theme_bw() +
    theme(legend.key.size = unit(0.5, "cm"), legend.title = element_text(size = 10)) +
    guides(size = "none")


(f3/f2/f1) + plot_annotation(tag_levels = "A")

Fig. 4 Bivariate ordinations of log absolute difference between males and females (see the main text)

Creating Figure S2

f4 <- ggplot(data = dat) + geom_point(aes(y = log(Zr), x = log(abs_int), col = Category,
    size = total_n)) + scale_fill_manual(values = cbpl) + scale_colour_manual(values = cbpl) +
    labs(y = "Zr (transformed variance accounted for)", x = "ln(Absolute difference in standardized intercepts)") +
    labs(color = "Trait types", size = "Sample size (N)") + annotate(geom = "text",
    x = -2.5, y = -6, label = "r = 0.53 [0.41., 0.63]", size = 3) + theme_bw() +
    theme(legend.key.size = unit(0.5, "cm"), legend.title = element_text(size = 10)) +
    guides(size = "none")  #+
# theme(legend.position= c(0.03, 0.97), legend.justification = c(0, 0.97))


f5 <- ggplot(data = dat) + geom_point(aes(y = log(Zr), x = log(abs_slope), col = Category,
    size = total_n)) + scale_fill_manual(values = cbpl) + scale_colour_manual(values = cbpl) +
    labs(y = "Zr (transformed variance accounted for)", x = "ln(Absolute difference in standardized slopes)") +
    labs(color = "Trait types", size = "Sample size (N)") + annotate(geom = "text",
    x = -2, y = -6, label = "r = 0.37 [0.23, 0.41]", size = 3) + theme_bw() + theme(legend.key.size = unit(0.5,
    "cm"), legend.title = element_text(size = 10)) + guides(col = "none", size = "none") +
    scale_size_continuous(breaks = c(200, 2000, 20000), guide = guide_legend()) +
    theme(legend.position = c(0.03, 0.97), legend.justification = c(0, 0.97))


f6 <- ggplot(data = dat) + geom_point(aes(y = log(Zr), x = log(abs_lnVR), col = Category,
    size = total_n)) + scale_fill_manual(values = cbpl) + scale_colour_manual(values = cbpl) +
    labs(y = "Zr (transformed variance accounted for)", x = "ln(Absolute relative difference in SD)") +
    labs(color = "Trait types", size = "Sample size (N)") + annotate(geom = "text",
    x = -0.25, y = -5, label = "r = 0.18 [0.02, 0.33]", size = 3) + theme_bw() +
    theme(legend.key.size = unit(0.5, "cm"), legend.title = element_text(size = 10)) +
    guides(col = "none")  #+
# scale_size_continuous(breaks = c(200, 2000, 20000), guide = guide_legend())


(f4/f5/f6) + plot_annotation(tag_levels = "A")

Fig. S2 Bivariate ordinations of log absolute difference between males and females (see the main text)

Software and package versions

sessionInfo() %>%
    pander()

R version 4.2.0 (2022-04-22)

Platform: x86_64-apple-darwin17.0 (64-bit)

locale: en_AU.UTF-8||en_AU.UTF-8||en_AU.UTF-8||C||en_AU.UTF-8||en_AU.UTF-8

attached base packages: stats, graphics, grDevices, utils, datasets, methods and base

other attached packages: cmdstanr(v.0.5.3), rstan(v.2.21.5), StanHeaders(v.2.21.0-7), knitr(v.1.39), formatR(v.1.12), kableExtra(v.1.3.4), brms(v.2.17.0), Rcpp(v.1.0.8.3), pander(v.0.6.5), nlme(v.3.1-157), here(v.1.0.1), broom.mixed(v.0.2.9.4), orchaRd(v.2.0), patchwork(v.1.1.1), poolr(v.1.1-1), metafor(v.3.4-0), metadat(v.1.2-0), Matrix(v.1.4-1), forcats(v.0.5.1), stringr(v.1.4.0), dplyr(v.1.0.9), purrr(v.0.3.4), readr(v.2.1.2), tidyr(v.1.2.0), tibble(v.3.1.8), ggplot2(v.3.3.6) and tidyverse(v.1.3.2)

loaded via a namespace (and not attached): readxl(v.1.4.0), backports(v.1.4.1), systemfonts(v.1.0.4), plyr(v.1.8.7), igraph(v.1.3.2), splines(v.4.2.0), crosstalk(v.1.2.0), listenv(v.0.8.0), rstantools(v.2.2.0), inline(v.0.3.19), digest(v.0.6.29), htmltools(v.0.5.3), fansi(v.1.0.3), magrittr(v.2.0.3), checkmate(v.2.1.0), googlesheets4(v.1.0.0), tzdb(v.0.3.0), globals(v.0.15.0), modelr(v.0.1.8), RcppParallel(v.5.1.5), matrixStats(v.0.62.0), vroom(v.1.5.7), svglite(v.2.1.0), xts(v.0.12.1), prettyunits(v.1.1.1), rmdformats(v.1.0.4), colorspace(v.2.0-3), rvest(v.1.0.2), haven(v.2.5.0), xfun(v.0.31), callr(v.3.7.1), crayon(v.1.5.1), jsonlite(v.1.8.0), zoo(v.1.8-10), glue(v.1.6.2), gtable(v.0.3.0), gargle(v.1.2.0), emmeans(v.1.7.5), webshot(v.0.5.3), distributional(v.0.3.0), pkgbuild(v.1.3.1), abind(v.1.4-5), scales(v.1.2.0), mvtnorm(v.1.1-3), DBI(v.1.1.3), miniUI(v.0.1.1.1), viridisLite(v.0.4.0), xtable(v.1.8-4), bit(v.4.0.4), stats4(v.4.2.0), DT(v.0.23), htmlwidgets(v.1.5.4), httr(v.1.4.3), threejs(v.0.3.3), posterior(v.1.2.2), ellipsis(v.0.3.2), pkgconfig(v.2.0.3), loo(v.2.5.1), farver(v.2.1.1), sass(v.0.4.2), dbplyr(v.2.2.1), utf8(v.1.2.2), labeling(v.0.4.2), tidyselect(v.1.1.2), rlang(v.1.0.4), reshape2(v.1.4.4), later(v.1.3.0), munsell(v.0.5.0), cellranger(v.1.1.0), tools(v.4.2.0), cachem(v.1.0.6), cli(v.3.3.0), generics(v.0.1.3), pacman(v.0.5.1), broom(v.1.0.0), mathjaxr(v.1.6-0), ggridges(v.0.5.3), evaluate(v.0.15), fastmap(v.1.1.0), yaml(v.2.3.5), bit64(v.4.0.5), processx(v.3.7.0), fs(v.1.5.2), future(v.1.26.1), mime(v.0.12), xml2(v.1.3.3), compiler(v.4.2.0), bayesplot(v.1.9.0), shinythemes(v.1.2.0), rstudioapi(v.0.13), reprex(v.2.0.1), bslib(v.0.4.0), stringi(v.1.7.8), highr(v.0.9), ps(v.1.7.1), Brobdingnag(v.1.2-7), lattice(v.0.20-45), markdown(v.1.1), shinyjs(v.2.1.0), tensorA(v.0.36.2), vctrs(v.0.4.1), pillar(v.1.8.0), lifecycle(v.1.0.1), furrr(v.0.3.0), jquerylib(v.0.1.4), bridgesampling(v.1.1-2), estimability(v.1.4), httpuv(v.1.6.5), R6(v.2.5.1), bookdown(v.0.26), promises(v.1.2.0.1), gridExtra(v.2.3), parallelly(v.1.32.0), codetools(v.0.2-18), colourpicker(v.1.1.1), gtools(v.3.9.2.2), assertthat(v.0.2.1), rprojroot(v.2.0.3), withr(v.2.5.0), shinystan(v.2.6.0), parallel(v.4.2.0), hms(v.1.1.1), grid(v.4.2.0), coda(v.0.19-4), rmarkdown(v.2.14), googledrive(v.2.0.0), shiny(v.1.7.1), lubridate(v.1.8.0), base64enc(v.0.1-3) and dygraphs(v.1.1.1.6)

LS0tCnRpdGxlOiAiU3VwcG9ydGluZyBJbmZvcm1hdGlvbjogJ1NleCBkaWZmZXJlbmNlcyBpbiBhbGxvbWV0cnkgZm9yIHBoZW5vdHlwaWMgdHJhaXRzIGluIG1pY2UgaW5kaWNhdGUgdGhhdCBmZW1hbGVzIGFyZSBub3Qgc2NhbGVkIG1hbGVzJyAiCnN1YnRpdGxlOiAiTGF1cmEgQS4gQi4gV2lsc29uLCBTdXNhbm5lIFIuIEsuIFphaml0c2NoZWssIE1hbGdvcnphdGEgTGFnaXN6LCBKZXJlbXkgTWFzb24sIEhhbWVkIEhhc2VsaW1hc2hoYWRpICYgU2hpbmljaGkgTmFrYWdhd2EiIAojYXV0aG9yczogCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCICVZJylgIgpvdXRwdXQ6IAogICAgCiAgICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjoKICAgICAgY29kZV9mb2xkaW5nOiBzaG93ICNoaWRlCiAgICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgICAgdG9jX2RlcHRoOiA0CmVkaXRvcl9vcHRpb25zOiAKICBjaHVua19vdXRwdXRfdHlwZTogY29uc29sZQotLS0KCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldCgKbWVzc2FnZSA9IEZBTFNFLAp3YXJuaW5nID0gRkFMU0UsCmNhY2hlID0gVFJVRSwgCnRpZHkgPSBUUlVFLCAKZWNobyA9IFRSVUUKKQoKcm0obGlzdCA9IGxzKCkpCmBgYAoKVGhpcyBkb2N1bWVudCBtYWlubHkgcHJvdmlkZXMgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBtYWluIGRhdGFzZXQsIGFuZCB0aGUgUiBzY3JpcHRzIGFuZCB0aGVpciBvdXRwdXRzIGZvciB0aGUgcGFwZXIgIlNleCBkaWZmZXJlbmNlcyBpbiBhbGxvbWV0cnkgZm9yIHBoZW5vdHlwaWMgdHJhaXRzIGluZGljYXRlIHRoYXQgZmVtYWxlcyBhcmUgbm90IHNjYWxlZCBtYWxlcyIuCgojIFNldHRpbmctdXAgey50YWJzZXR9CgojIyBMb2FkaW5nIHBhY2thZ2VzCgpgYGB7ciwgcmVzdWx0cz0naGlkZSd9CiMgb2xkZXIgdmVyc2lvbiBvZiB0aGUgb3JjaGFSZCBwYWNrYWdlCiNkZXZ0b29sczo6aW5zdGFsbF9naXRodWIoIml0Y2h5c2hpbi9vcmNoYXJkX3Bsb3QiLCBzdWJkaXIgPSAib3JjaGFSZCIsIGZvcmNlID0gVFJVRSwgYnVpbGRfdmlnbmV0dGVzID0gVFJVRSkKI2luc3RhbGwucGFja2FnZXMoImNtZHN0YW5yIiwgcmVwb3MgPSBjKCJodHRwczovL21jLXN0YW4ub3JnL3ItcGFja2FnZXMvIiwgZ2V0T3B0aW9uKCJyZXBvcyIpKSkKCnBhY21hbjo6cF9sb2FkKHRpZHl2ZXJzZSwKICAgICAgICAgICAgICAgcHVycnIsCiAgICAgICAgICAgICAgIG1ldGFmb3IsIAogICAgICAgICAgICAgICBwb29sciwKICAgICAgICAgICAgICAgcGF0Y2h3b3JrLAogICAgICAgICAgICAgICBvcmNoYVJkLCAjIG9sZGVyIHZlcnNpb246IAogICAgICAgICAgICAgICBicm9vbS5taXhlZCwKICAgICAgICAgICAgICAgaGVyZSwKICAgICAgICAgICAgICAgbmxtZSwKICAgICAgICAgICAgICAgcGFuZGVyLAogICAgICAgICAgICAgICBicm1zLAogICAgICAgICAgICAgICBrYWJsZUV4dHJhLAogICAgICAgICAgICAgICBmb3JtYXRSLAogICAgICAgICAgICAgICBrbml0ciwKICAgICAgICAgICAgICAgYnJtcywKICAgICAgICAgICAgICAgcnN0YW4sCiAgICAgICAgICAgICAgIGNtZHN0YW5yCiAgICAgICAgICAgICAgICkKCmNoZWNrX2NtZHN0YW5fdG9vbGNoYWluKGZpeCA9IFRSVUUsIHF1aWV0ID0gVFJVRSkKYGBgCgojIyBMb2FkaW5nIGN1c3RvbSBmdW5jdGlvbnMKCldlIGxvYWQgY3VzdG9tIGZ1bmN0aW9uIG5vdCBpbmNsdWRlZCBpbiB0aGUgcGFja2FnZXMgYWJvdmUuCgotICAgZnVuY3Rpb25zIGZvciBjYWxjdWxhdGluZyAncGFyYW1ldGVycycgKGludGVyY2VwdHMsIHNsb3BlcyBhbmQgcmVzaWR1YWxzIFNEcyBmb3IgYm90aCBtYWxlcyBhbmQgZmVtYWxlcyBhbmQgbW9kZWwgZml0KSA6IGBnZXRfcGFybWV0ZXJzTmAKLSAgIGZ1bmN0aW9ucyBmb3IgZHJhd2luZyBvcmNoYXJkIHBsb3RzIChtb2RpZmllZCBmcm9tIHRoZSBvcmlnaW5hbCk6IGBvcmNoYXJkX3Bsb3QyYCBhbmQgYXNzb2ljYXRlZCBmdW5jdGlvbnMuCgpgYGB7cn0KCiMgZnVuY3Rpb24gdG8gZ2V0IHdoYXQgd2UgbmVlZCBmcm9tIHRoZXNlIDIgbW9kZWxzICh5b3UgY2FuIGluY2x1ZGUgbW9kZWxzIGluIHRoaXMgZnVuY3Rpb24gYXMgd2VsbCkKZ2V0X3Bhcm1ldGVyc048LSBmdW5jdGlvbihpKXsKICAKICAjIGdyYW5kLW1lYW4gY2VudGVyaW5nIG9mIHdlaWdodHMKICBsbl9jX3dlaWdodCA8LSBzY2FsZShsb2coaVtbIndlaWdodCJdXSksIGNlbnRlciA9IFRSVUUsIHNjYWxlID0gVFJVRSkKICBpWywibG5fY193ZWlnaHQiXSA8LSBsbl9jX3dlaWdodAogIAogIGlmKGlbWyJubWV0YSJdXVsxXSA9PSAxICYmIGlbWyJuc3RyYWluIl1dWzFdID09IDEpewogIAogICAgIyBmZW1hbGUgbW9kZWwgCiAgICBtb2RlbF9mIDwtIGxtZShsb2coZGF0YV9wb2ludDIpIH4gc2V4KmxuX2Nfd2VpZ2h0LCAKICAgICAgICAgICAgICAgICAgIHJhbmRvbSA9IGxpc3QoI21ldGFkYXRhX2dyb3VwID0gfiBsbl9jX3dlaWdodCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3N0cmFpbl9uYW1lID0gfiBsbl9jX3dlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9vZl9leHBlcmltZW50ID0gfiAxKSwKICAgICAgICAgICAgICAgICAgIHdlaWdodHMgPSB2YXJJZGVudChmb3JtID0gfjEgfCBzZXgpLAogICAgICAgICAgICAgICAgICAgY29udHJvbCA9IGxtZUNvbnRyb2wob3B0ID0gIm9wdGltIiksCiAgICAgICAgICAgICAgICAgICBkYXRhID0gaSkKICAgIAogICAgIyBtYWxlIG1vZGVsCiAgICBtb2RlbF9tIDwtIGxtZShsb2coZGF0YV9wb2ludDIpIH4gcmVsZXZlbChzZXgsIHJlZiA9ICJtYWxlIikqbG5fY193ZWlnaHQsIAogICAgICAgICAgICAgICAgICAgcmFuZG9tID0gbGlzdCgjbWV0YWRhdGFfZ3JvdXAgPSB+IGxuX2Nfd2VpZ2h0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3N0cmFpbl9uYW1lID0gfiBsbl9jX3dlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9vZl9leHBlcmltZW50ID0gfiAxKSwKICAgICAgICAgICAgICAgICAgIHdlaWdodHMgPSB2YXJJZGVudChmb3JtID0gfjEgfCBzZXgpLAogICAgICAgICAgICAgICAgICAgY29udHJvbCA9IGxtZUNvbnRyb2wob3B0ID0gIm9wdGltIiksCiAgICAgICAgICAgICAgICAgICBkYXRhID0gaSkKICAgICMgbmV1dHJhbCBtb2RlbAogICAgbW9kZWxfbiA8LSBsbWUobG9nKGRhdGFfcG9pbnQyKSB+IHNleCpsbl9jX3dlaWdodCwgCiAgICAgICAgICAgICAgICAgICByYW5kb20gPSBsaXN0KCNtZXRhZGF0YV9ncm91cCA9IH4gbG5fY193ZWlnaHQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjc3RyYWluX25hbWUgPSB+IGxuX2Nfd2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX29mX2V4cGVyaW1lbnQgPSB+IDEpLAogICAgICAgICAgICAgICAgICAgI3dlaWdodHMgPSB2YXJJZGVudChmb3JtID0gfjEgfCBzZXgpLAogICAgICAgICAgICAgICAgICAgY29udHJvbCA9IGxtZUNvbnRyb2wob3B0ID0gIm9wdGltIiksCiAgICAgICAgICAgICAgICAgICBkYXRhID0gaSkKICAgICAgCiAgfSBlbHNlIGlmIChpW1sibm1ldGEiXV1bMV0gPT0gMSkgewogICAgCiAgICAjIGZlbWFsZSBtb2RlbCAKICAgIG1vZGVsX2YgPC0gbG1lKGxvZyhkYXRhX3BvaW50MikgfiBzZXgqbG5fY193ZWlnaHQsIAogICAgICAgICAgICAgICAgICAgcmFuZG9tID0gbGlzdCgjbWV0YWRhdGFfZ3JvdXAgPSB+IGxuX2Nfd2VpZ2h0LCAKICAgICAgICAgICAgICAgICAgICAgc3RyYWluX25hbWUgPSB+IGxuX2Nfd2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICBkYXRlX29mX2V4cGVyaW1lbnQgPSB+IDEpLAogICAgICAgICAgICAgICAgICAgd2VpZ2h0cyA9IHZhcklkZW50KGZvcm0gPSB+MSB8IHNleCksCiAgICAgICAgICAgICAgICAgICBjb250cm9sID0gbG1lQ29udHJvbChvcHQgPSAib3B0aW0iKSwKICAgICAgICAgICAgICAgICAgIGRhdGEgPSBpKQogICAgCiAgICAjIG1hbGUgbW9kZWwKICAgIG1vZGVsX20gPC0gbG1lKGxvZyhkYXRhX3BvaW50MikgfiByZWxldmVsKHNleCwgcmVmID0gIm1hbGUiKSpsbl9jX3dlaWdodCwgCiAgICAgICAgICAgICAgICAgICByYW5kb20gPSBsaXN0KCNtZXRhZGF0YV9ncm91cCA9IH4gbG5fY193ZWlnaHQsIAogICAgICAgICAgICAgICAgICAgICBzdHJhaW5fbmFtZSA9IH4gbG5fY193ZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgIGRhdGVfb2ZfZXhwZXJpbWVudCA9IH4gMSksCiAgICAgICAgICAgICAgICAgICB3ZWlnaHRzID0gdmFySWRlbnQoZm9ybSA9IH4xIHwgc2V4KSwKICAgICAgICAgICAgICAgICAgIGNvbnRyb2wgPSBsbWVDb250cm9sKG9wdCA9ICJvcHRpbSIpLAogICAgICAgICAgICAgICAgICAgZGF0YSA9IGkpCiAgICAjIG5ldXRyYWwgbW9kZWwKICAgIG1vZGVsX24gPC0gbG1lKGxvZyhkYXRhX3BvaW50MikgfiBzZXgqbG5fY193ZWlnaHQsIAogICAgICAgICAgICAgICAgICAgcmFuZG9tID0gbGlzdCgjbWV0YWRhdGFfZ3JvdXAgPSB+IGxuX2Nfd2VpZ2h0LCAKICAgICAgICAgICAgICAgICAgICAgc3RyYWluX25hbWUgPSB+IGxuX2Nfd2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICBkYXRlX29mX2V4cGVyaW1lbnQgPSB+IDEpLAogICAgICAgICAgICAgICAgICAgI3dlaWdodHMgPSB2YXJJZGVudChmb3JtID0gfjEgfCBzZXgpLAogICAgICAgICAgICAgICAgICAgY29udHJvbCA9IGxtZUNvbnRyb2wob3B0ID0gIm9wdGltIiksCiAgICAgICAgICAgICAgICAgICBkYXRhID0gaSkKICAgIAogIH0gZWxzZSBpZiAoaVtbIm5zdHJhaW4iXV1bMV0gPT0gMSl7CiAgICAKICAgICMgZmVtYWxlIG1vZGVsIAogICAgbW9kZWxfZiA8LSBsbWUobG9nKGRhdGFfcG9pbnQyKSB+IHNleCpsbl9jX3dlaWdodCwgCiAgICAgICAgICAgICAgICAgICByYW5kb20gPSBsaXN0KG1ldGFkYXRhX2dyb3VwID0gfiBsbl9jX3dlaWdodCwgCiAgICAgICAgICAgICAgICAgICAgICNzdHJhaW5fbmFtZSA9IH4gbG5fY193ZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgIGRhdGVfb2ZfZXhwZXJpbWVudCA9IH4gMSksCiAgICAgICAgICAgICAgICAgICB3ZWlnaHRzID0gdmFySWRlbnQoZm9ybSA9IH4xIHwgc2V4KSwKICAgICAgICAgICAgICAgICAgIGNvbnRyb2wgPSBsbWVDb250cm9sKG9wdCA9ICJvcHRpbSIpLAogICAgICAgICAgICAgICAgICAgZGF0YSA9IGkpCiAgICAKICAgICMgbWFsZSBtb2RlbAogICAgbW9kZWxfbSA8LSBsbWUobG9nKGRhdGFfcG9pbnQyKSB+IHJlbGV2ZWwoc2V4LCByZWYgPSAibWFsZSIpKmxuX2Nfd2VpZ2h0LCAKICAgICAgICAgICAgICAgICAgIHJhbmRvbSA9IGxpc3QobWV0YWRhdGFfZ3JvdXAgPSB+IGxuX2Nfd2VpZ2h0LCAKICAgICAgICAgICAgICAgICAgICAgI3N0cmFpbl9uYW1lID0gfiBsbl9jX3dlaWdodCwKICAgICAgICAgICAgICAgICAgICAgZGF0ZV9vZl9leHBlcmltZW50ID0gfiAxKSwKICAgICAgICAgICAgICAgICAgIHdlaWdodHMgPSB2YXJJZGVudChmb3JtID0gfjEgfCBzZXgpLAogICAgICAgICAgICAgICAgICAgY29udHJvbCA9IGxtZUNvbnRyb2wob3B0ID0gIm9wdGltIiksCiAgICAgICAgICAgICAgICAgICBkYXRhID0gaSkKICAgICMgbmV1dHJhbCBtb2RlbAogICAgbW9kZWxfbiA8LSBsbWUobG9nKGRhdGFfcG9pbnQyKSB+IHNleCpsbl9jX3dlaWdodCwgCiAgICAgICAgICAgICAgICAgICByYW5kb20gPSBsaXN0KG1ldGFkYXRhX2dyb3VwID0gfiBsbl9jX3dlaWdodCwgCiAgICAgICAgICAgICAgICAgICAgICNzdHJhaW5fbmFtZSA9IH4gbG5fY193ZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgIGRhdGVfb2ZfZXhwZXJpbWVudCA9IH4gMSksCiAgICAgICAgICAgICAgICAgICAjd2VpZ2h0cyA9IHZhcklkZW50KGZvcm0gPSB+MSB8IHNleCksCiAgICAgICAgICAgICAgICAgICBjb250cm9sID0gbG1lQ29udHJvbChvcHQgPSAib3B0aW0iKSwKICAgICAgICAgICAgICAgICAgIGRhdGEgPSBpKQogIH0gZWxzZSB7CiAgICAjIGZlbWFsZSBtb2RlbCAKICAgIG1vZGVsX2YgPC0gbG1lKGxvZyhkYXRhX3BvaW50MikgfiBzZXgqbG5fY193ZWlnaHQsIAogICAgICAgICAgICAgICAgICAgcmFuZG9tID0gbGlzdChtZXRhZGF0YV9ncm91cCA9IH4gbG5fY193ZWlnaHQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJhaW5fbmFtZSA9IH4gbG5fY193ZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVfb2ZfZXhwZXJpbWVudCA9IH4gMSksCiAgICAgICAgICAgICAgICAgICB3ZWlnaHRzID0gdmFySWRlbnQoZm9ybSA9IH4xIHwgc2V4KSwKICAgICAgICAgICAgICAgICAgIGNvbnRyb2wgPSBsbWVDb250cm9sKG9wdCA9ICJvcHRpbSIpLAogICAgICAgICAgICAgICAgICAgZGF0YSA9IGkpCiAgICAKICAgICMgbWFsZSBtb2RlbAogICAgbW9kZWxfbSA8LSBsbWUobG9nKGRhdGFfcG9pbnQyKSB+IHJlbGV2ZWwoc2V4LCByZWYgPSAibWFsZSIpKmxuX2Nfd2VpZ2h0LCAKICAgICAgICAgICAgICAgICAgIHJhbmRvbSA9IGxpc3QobWV0YWRhdGFfZ3JvdXAgPSB+IGxuX2Nfd2VpZ2h0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyYWluX25hbWUgPSB+IGxuX2Nfd2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX29mX2V4cGVyaW1lbnQgPSB+IDEpLAogICAgICAgICAgICAgICAgICAgd2VpZ2h0cyA9IHZhcklkZW50KGZvcm0gPSB+MSB8IHNleCksCiAgICAgICAgICAgICAgICAgICBjb250cm9sID0gbG1lQ29udHJvbChvcHQgPSAib3B0aW0iKSwKICAgICAgICAgICAgICAgICAgIGRhdGEgPSBpKQogICAgIyBuZXV0cmFsIG1vZGVsCiAgICBtb2RlbF9uIDwtIGxtZShsb2coZGF0YV9wb2ludDIpIH4gc2V4KmxuX2Nfd2VpZ2h0LCAKICAgICAgICAgICAgICAgICAgIHJhbmRvbSA9IGxpc3QobWV0YWRhdGFfZ3JvdXAgPSB+IGxuX2Nfd2VpZ2h0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyYWluX25hbWUgPSB+IGxuX2Nfd2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX29mX2V4cGVyaW1lbnQgPSB+IDEpLAogICAgICAgICAgICAgICAgICAgI3dlaWdodHMgPSB2YXJJZGVudChmb3JtID0gfjEgfCBzZXgpLAogICAgICAgICAgICAgICAgICAgY29udHJvbCA9IGxtZUNvbnRyb2wob3B0ID0gIm9wdGltIiksCiAgICAgICAgICAgICAgICAgICBkYXRhID0gaSkKICB9CiAgIyBnZXR0aW5nIGFsbCB3ZSB3YW50CiAgZmVtYWxlcyA8LSBicm9vbS5taXhlZDo6dGlkeShtb2RlbF9mKQogIG1hbGVzIDwtIGJyb29tLm1peGVkOjp0aWR5KG1vZGVsX20pCiAgIyBnZXRzIHZhcmlhbmNlIHdlaWdodHMKICB3ZWlnaHRzIDwtIGF0dHIobW9kZWxfZiRtb2RlbFN0cnVjdCR2YXJTdHJ1Y3QsICJ3ZWlnaHRzIikKICBtYWxlX2NvcnJlY3Rpb24gPC0gMS93ZWlnaHRzW3doaWNoKG5hbWVzKHdlaWdodHMpID09ICJtYWxlIilbMV1dCiAgZmVtYWxlX2NvcnJlY3Rpb24gPC0gMS93ZWlnaHRzW3doaWNoKG5hbWVzKHdlaWdodHMpID09ICJmZW1hbGUiKVsxXV0KICAKICAjIGdldCBwYXJhbWV0ZXJzCiAgcGFyYW1ldGVyX25hbWUgPC0gdG9sb3dlcihpW1sicGFyYW1ldGVyX25hbWUiXV1bMV0pCiAgcHJvY2VkdXJlX25hbWUgPC0gaVtbInByb2NlZHVyZV9uYW1lIl1dWzFdIyAicHJvY2VkdXJlX25hbWUiCiAgbV9uIDwtIHN1bShpW1sic2V4Il1dID09ICJtYWxlIikgIyBzYW1wbGUgc2l6ZSBmb3IgbWFsZXMgCiAgZl9uIDwtIHN1bShpW1sic2V4Il1dID09ICJmZW1hbGUiKSAjIE4gZm8gZmVtYWxlcwogIGZfaW50ZXJjZXB0IDwtIGFzLm51bWVyaWMoZmVtYWxlc1sxLCA0XSkKICBmX2ludGVyY2VwdF9zZSA8LSBhcy5udW1lcmljKGZlbWFsZXNbMSwgNV0pCiAgZl9zbG9wZSA8LSBhcy5udW1lcmljKGZlbWFsZXNbMywgNF0pCiAgZl9zbG9wZV9zZSA8LSBhcy5udW1lcmljKGZlbWFsZXNbMywgNV0pCiAgbV9pbnRlcmNlcHQgPC0gYXMubnVtZXJpYyhtYWxlc1sxLCA0XSkKICBtX2ludGVyY2VwdF9zZSA8LSBhcy5udW1lcmljKG1hbGVzWzEsIDVdKQogIG1fc2xvcGUgIDwtIGFzLm51bWVyaWMobWFsZXNbMywgNF0pCiAgbV9zbG9wZV9zZSAgPC0gYXMubnVtZXJpYyhtYWxlc1szLCA1XSkKICBmbV9kaWZmX2ludCAgPC0gYXMubnVtZXJpYyhtYWxlc1syLCA0XSkKICBmbV9kaWZmX2ludF9zZSAgPC0gYXMubnVtZXJpYyhtYWxlc1syLCA1XSkKICBmbV9kaWZmX2ludF9wICA8LSBhcy5udW1lcmljKG1hbGVzWzIsIDhdKQogIGZtX2RpZmZfc2xvcGUgPC0gYXMubnVtZXJpYyhtYWxlc1s0LCA0XSkKICBmbV9kaWZmX3Nsb3BlX3NlIDwtIGFzLm51bWVyaWMobWFsZXNbNCwgNV0pCiAgZm1fZGlmZl9zbG9wZV9wIDwtIGFzLm51bWVyaWMobWFsZXNbNCwgOF0pCiAgCiAgIyB2YXJpYW5jZSBjb21wb25lbnQKICAjZ3JvdXBfc2QgPC0gYXMubnVtZXJpYyhWYXJDb3JyKG1vZGVsX2YpWywyXVsyXSkKICAjZ19zbG9wZV9zZCA8LSBhcy5udW1lcmljKFZhckNvcnIobW9kZWxfZilbLDJdWzNdKQogICNiYXRjaF9zZCA8LSBhcy5udW1lcmljKFZhckNvcnIobW9kZWxfZilbLDJdWzVdKQogIGZfc2QgPC0gYXMubnVtZXJpYyh0YWlsKFZhckNvcnIobW9kZWxfZilbLDJdLDEpKSpmZW1hbGVfY29ycmVjdGlvbgogIG1fc2QgPC0gYXMubnVtZXJpYyh0YWlsKFZhckNvcnIobW9kZWxfZilbLDJdLDEpKSptYWxlX2NvcnJlY3Rpb24KICAKICAjIG1vZGVsIGZpdAogIHJfbSA8LSBzcXJ0KE11TUluOjpyLnNxdWFyZWRHTE1NKG1vZGVsX24pWzEsMV0pCiAgcl9jIDwtIHNxcnQoTXVNSW46OnIuc3F1YXJlZEdMTU0obW9kZWxfbilbMSwyXSkKICAjIHB1dHRpbmcgaXQgdG9nZXRoZXIKICBwYXJhcyA8LSBkYXRhLmZyYW1lKHBhcmFtZXRlcl9uYW1lLCBwcm9jZWR1cmVfbmFtZSwgCiAgICAgICAgICAgICBmX24sIG1fbiwgZl9pbnRlcmNlcHQsIGZfaW50ZXJjZXB0X3NlLCBmX3Nsb3BlLCBmX3Nsb3BlX3NlLCAKICAgICAgICAgICAgIG1faW50ZXJjZXB0LCBtX2ludGVyY2VwdF9zZSwgbV9zbG9wZSwgbV9zbG9wZV9zZSwgCiAgICAgICAgICAgICBmbV9kaWZmX2ludCwgZm1fZGlmZl9pbnRfc2UsIGZtX2RpZmZfaW50X3AsCiAgICAgICAgICAgICBmbV9kaWZmX3Nsb3BlLCBmbV9kaWZmX3Nsb3BlX3NlLCBmbV9kaWZmX3Nsb3BlX3AsCiAgICAgICAgICAgICBmX3NkLCBtX3NkLCByX20sIHJfYykKICBuYW1lcyhwYXJhcykgPC0gYygncGFyYW1ldGVyX25hbWUnLCAncHJvY2VkdXJlX25hbWUnLCAKICAgICAgICAgICAgICAgICAgICAnZl9uJywgJ21fbicsJ2ZfaW50ZXJjZXB0JywgJ2ZfaW50ZXJjZXB0X3NlJywgJ2Zfc2xvcGUnLCAnZl9zbG9wZV9zZScsCiAgICAgICAgICAgICAgICAgICAgJ21faW50ZXJjZXB0JywgJ21faW50ZXJjZXB0X3NlJywgJ21fc2xvcGUnLCAnbV9zbG9wZV9zZScsCiAgICAgICAgICAgICAgICAgICAgJ2ZtX2RpZmZfaW50JywgJ2ZtX2RpZmZfaW50X3NlJywgJ2ZtX2RpZmZfaW50X3AnLAogICAgICAgICAgICAgICAgICAgICdmbV9kaWZmX3Nsb3BlJywgJ2ZtX2RpZmZfc2xvcGVfc2UnLCAnZm1fZGlmZl9zbG9wZV9wJywKICAgICAgICAgICAgICAgICAgICAnZl9zZCcsICdtX3NkJywgJ3JfbScsICdyX2MnKSAjIHZhcmlhbmNlIGNvbXBvbmVudAogIGludmlzaWJsZShwYXJhcykKICAKfQoKIyBmdW5jdGlvbiB0byBjb21wYXJlIHR3byBtb2RlbHMKZ2V0X3N0cmFpbl9wPC0gZnVuY3Rpb24oaSl7CiAgCiAgIyBjZW50ZXJpbmcgd2VpZ2h0cyBzZXBhcmF0ZWx5IGZvciBlYWNoIAogIGxuX2Nfd2VpZ2h0IDwtIHNjYWxlKGxvZyhpW1sid2VpZ2h0Il1dKSwgY2VudGVyID0gVFJVRSwgc2NhbGUgPSBUUlVFKQogIGlbLCJsbl9jX3dlaWdodCJdIDwtIGxuX2Nfd2VpZ2h0CiAgCiAgaWYgKGlbWyJubWV0YSJdXVsxXSA9PSAxKSB7CiAgICAKICAgICMgbW9kZWwgd2l0aCBzdHJhaW4gYXMgcmFuZG9tIGZhY3RvciAKICAgIG1vZGVsXzEgPC0gbG1lKGxvZyhkYXRhX3BvaW50MikgfiBzZXgqbG5fY193ZWlnaHQsIAogICAgICAgICAgICAgICAgICAgcmFuZG9tID0gbGlzdCgjbWV0YWRhdGFfZ3JvdXAgPSB+IGxuX2Nfd2VpZ2h0LCAKICAgICAgICAgICAgICAgICAgICAgc3RyYWluX25hbWUgPSB+IGxuX2Nfd2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICBkYXRlX29mX2V4cGVyaW1lbnQgPSB+IDEpLAogICAgICAgICAgICAgICAgICAgI3dlaWdodHMgPSB2YXJJZGVudChmb3JtID0gfjEgfCBzZXgpLAogICAgICAgICAgICAgICAgICAgY29udHJvbCA9IGxtZUNvbnRyb2wob3B0ID0gIm9wdGltIiksCiAgICAgICAgICAgICAgICAgICBkYXRhID0gaSkKICAgIAogICAgIyBtb2RlbCB3aXRob3V0IHN0cmFpbiBhcyByYW5kb20gZmFjdG9yIAogICAgbW9kZWxfMiA8LSBsbWUobG9nKGRhdGFfcG9pbnQyKSB+IHNleCpsbl9jX3dlaWdodCwgCiAgICAgICAgICAgICAgICAgICByYW5kb20gPSBsaXN0KCNtZXRhZGF0YV9ncm91cCA9IH4gbG5fY193ZWlnaHQsIAogICAgICAgICAgICAgICAgICAgICAjc3RyYWluX25hbWUgPSB+IGxuX2Nfd2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICBkYXRlX29mX2V4cGVyaW1lbnQgPSB+IDEpLAogICAgICAgICAgICAgICAgICAgI3dlaWdodHMgPSB2YXJJZGVudChmb3JtID0gfjEgfCBzZXgpLAogICAgICAgICAgICAgICAgICAgY29udHJvbCA9IGxtZUNvbnRyb2wob3B0ID0gIm9wdGltIiksCiAgICAgICAgICAgICAgICAgICBkYXRhID0gaSkKICAgIAogICAgCiAgICAKICB9ICBlbHNlIHsKCiAgICAjIG1vZGVsIHdpdGggc3RyYWluIGFzIHJhbmRvbSBmYWN0b3IgCiAgICBtb2RlbF8xIDwtIGxtZShsb2coZGF0YV9wb2ludDIpIH4gc2V4KmxuX2Nfd2VpZ2h0LCAKICAgICAgICAgICAgICAgICAgIHJhbmRvbSA9IGxpc3QobWV0YWRhdGFfZ3JvdXAgPSB+IGxuX2Nfd2VpZ2h0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyYWluX25hbWUgPSB+IGxuX2Nfd2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX29mX2V4cGVyaW1lbnQgPSB+IDEpLAogICAgICAgICAgICAgICAgICAgI3dlaWdodHMgPSB2YXJJZGVudChmb3JtID0gfjEgfCBzZXgpLAogICAgICAgICAgICAgICAgICAgY29udHJvbCA9IGxtZUNvbnRyb2wob3B0ID0gIm9wdGltIiksCiAgICAgICAgICAgICAgICAgICBkYXRhID0gaSkKICAgICMgbW9kZWwgd2l0aG91dCBzdHJhaW4gYXMgcmFuZG9tIGZhY3RvciAKICAgIG1vZGVsXzIgPC0gbG1lKGxvZyhkYXRhX3BvaW50MikgfiBzZXgqbG5fY193ZWlnaHQsIAogICAgICAgICAgICAgICAgICAgcmFuZG9tID0gbGlzdChtZXRhZGF0YV9ncm91cCA9IH4gbG5fY193ZWlnaHQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjc3RyYWluX25hbWUgPSB+IGxuX2Nfd2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX29mX2V4cGVyaW1lbnQgPSB+IDEpLAogICAgICAgICAgICAgICAgICAgI3dlaWdodHMgPSB2YXJJZGVudChmb3JtID0gfjEgfCBzZXgpLAogICAgICAgICAgICAgICAgICAgY29udHJvbCA9IGxtZUNvbnRyb2wob3B0ID0gIm9wdGltIiksCiAgICAgICAgICAgICAgICAgICBkYXRhID0gaSkKICAgIAogIH0KICAKICAjIGFub3ZhIAogIHBfdmFsdWUgPC0gYW5vdmEobW9kZWxfMSwgbW9kZWxfMikkcFtbMl1dCiAgZGVsdGFfYWljIDwtIGFub3ZhKG1vZGVsXzEsIG1vZGVsXzIpJEFJQ1sxXSAtIGFub3ZhKG1vZGVsXzEsIG1vZGVsXzIpJEFJQ1syXSAKICAKICAjIGdldCBwYXJhbWV0ZXJzCiAgcGFyYW1ldGVyX25hbWUgPC0gdG9sb3dlcihpW1sicGFyYW1ldGVyX25hbWUiXV1bMV0pCiAgcHJvY2VkdXJlX25hbWUgPC0gaVtbInByb2NlZHVyZV9uYW1lIl1dWzFdIyAicHJvY2VkdXJlX25hbWUiCiAgCiAgcGFyYXMgPC0gZGF0YS5mcmFtZShwYXJhbWV0ZXJfbmFtZSwgcHJvY2VkdXJlX25hbWUsIGRlbHRhX2FpYywgcF92YWx1ZSkKICBuYW1lcyhwYXJhcykgPC0gYygncGFyYW1ldGVyX25hbWUnLCAncHJvY2VkdXJlX25hbWUnLCAnZGVsdGFfYWljJywgJ3BfdmFsdWUnKSAjIHZhcmlhbmNlIGNvbXBvbmVudAogIGludmlzaWJsZShwYXJhcykKICAKfQoKCiMgZ2V0dGluZyByaWRlIG9mIHRyYWl0cyB3aGljaCBkbyBub3QgcnVuCmdldF9wYXJhX3Bvc3MgPC0gcG9zc2libHkoLmYgPSBnZXRfcGFybWV0ZXJzTiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ3aXNlID0gTlVMTCkKCgojIGdldHRpbmcgcmlkZSBvZiB0cmFpdHMgd2l0aCBkbyBub3QgcnVuCgpnZXRfcGFyYV9wb3NzMiA8LSBwb3NzaWJseSguZiA9IGdldF9zdHJhaW5fcCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ3aXNlID0gTlVMTCkKCiMgZnVuY3Rpb25zCgpvcmNoYXJkX3Bsb3QyIDwtIGZ1bmN0aW9uIChvYmplY3QsIG1vZCA9ICJJbnQiLCB4bGFiLCBOID0gIm5vbmUiLCBhbHBoYSA9IDAuNSwgCiAgICAgICAgICBhbmdsZSA9IDkwLCBjYiA9IEZBTFNFLCBrID0gVFJVRSwgdHJhbnNmbSA9IGMoIm5vbmUiLCAidGFuaCIpLCAKICAgICAgICAgIHBvaW50LnNpemUgPSAyLjUsIGJyYW5jaC5zaXplID0gNSwKICAgICAgICAgIGNvbmRpdGlvbi5sYWIgPSAiQ29uZGl0aW9uIiwgbGVnZW5kLm9uID0gVFJVRSkgCnsKICB0cmFuc2ZtIDwtIG1hdGNoLmFyZyh0cmFuc2ZtKQogIGlmIChhbnkoY2xhc3Mob2JqZWN0KSAlaW4lIGMoInJtYS5tdiIsICJybWEiKSkpIHsKICAgIGlmIChtb2QgIT0gIkludCIpIHsKICAgICAgb2JqZWN0IDwtIG1vZF9yZXN1bHRzKG9iamVjdCwgbW9kKQogICAgfQogICAgZWxzZSB7CiAgICAgIG9iamVjdCA8LSBtb2RfcmVzdWx0cyhvYmplY3QsIG1vZCA9ICJJbnQiKQogICAgfQogIH0KICBtb2RfdGFibGUgPC0gb2JqZWN0JG1vZF90YWJsZQogIGRhdGEgPC0gb2JqZWN0JGRhdGEKICBkYXRhJG1vZGVyYXRvciA8LSBmYWN0b3IoZGF0YSRtb2RlcmF0b3IsIGxldmVscyA9IG1vZF90YWJsZSRuYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gbW9kX3RhYmxlJG5hbWUpCiAgZGF0YSRzY2FsZSA8LSAoMS9zcXJ0KGRhdGFbLCAidmkiXSkpCiAgbGVnZW5kIDwtICJQcmVjaXNpb24gKDEvU0UpIgogCiAgIyBzYW1wbGUgc2l6ZSAKICBpZihhbnkoTiAhPSAibm9uZSIpKXsKICAgIGRhdGEkc2NhbGUgPC0gTgogICAgbGVnZW5kIDwtICJTYW1wbGUgc2l6ZSAoTikiICMgd2Ugd2FudCB0byB1c2UgaXRhbGljCiAgfQogIAogIGlmICh0cmFuc2ZtID09ICJ0YW5oIikgewogICAgY29scyA8LSBzYXBwbHkobW9kX3RhYmxlLCBpcy5udW1lcmljKQogICAgbW9kX3RhYmxlWywgY29sc10gPC0gWnJfdG9fcihtb2RfdGFibGVbLCBjb2xzXSkKICAgIGRhdGEkeWkgPC0gWnJfdG9fcihkYXRhJHlpKQogICAgbGFiZWwgPC0geGxhYgogIH0KICBlbHNlIHsKICAgIGxhYmVsIDwtIHhsYWIKICB9CiAgbW9kX3RhYmxlJEsgPC0gYXMudmVjdG9yKGJ5KGRhdGEsIGRhdGFbLCAibW9kZXJhdG9yIl0sIGZ1bmN0aW9uKHgpIGxlbmd0aCh4WywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5aSJdKSkpCiAgZ3JvdXBfbm8gPC0gbGVuZ3RoKHVuaXF1ZShtb2RfdGFibGVbLCAibmFtZSJdKSkKICBjYnBsIDwtIGMoIiNFNjlGMDAiLCAiIzAwOUU3MyIsICIjRjBFNDQyIiwgIiMwMDcyQjIiLCAiI0Q1NUUwMCIsIAogICAgICAgICAgICAiI0NDNzlBNyIsICIjNTZCNEU5IiwgIiM5OTk5OTkiKQogIGlmIChuYW1lcyhtb2RfdGFibGUpWzJdID09ICJjb25kaXRpb24iKSB7CiAgICBjb25kaXRpb25fbm8gPC0gbGVuZ3RoKHVuaXF1ZShtb2RfdGFibGVbLCAiY29uZGl0aW9uIl0pKQogICAgcGxvdCA8LSBnZ3Bsb3QyOjpnZ3Bsb3QoKSArIGdnYmVlc3dhcm06Omdlb21fcXVhc2lyYW5kb20oZGF0YSA9IGRhdGEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2dwbG90Mjo6YWVzKHkgPSB5aSwgeCA9IG1vZGVyYXRvciwgc2l6ZSA9IHNjYWxlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBtb2RlcmF0b3IpLCBhbHBoYSA9IGFscGhhKSArIGdncGxvdDI6Omdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5ldHlwZSA9IDIsIGNvbG91ciA9ICJibGFjayIsIGFscGhhID0gYWxwaGEpICsgCiAgICAgIGdncGxvdDI6Omdlb21fbGluZXJhbmdlKGRhdGEgPSBtb2RfdGFibGUsIGdncGxvdDI6OmFlcyh4ID0gbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5bWluID0gbG93ZXJDTCwgeW1heCA9IHVwcGVyQ0wpLCBzaXplID0gYnJhbmNoLnNpemUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGdncGxvdDI6OnBvc2l0aW9uX2RvZGdlMih3aWR0aCA9IDAuMykpICsgCiAgICAgIGdncGxvdDI6Omdlb21fcG9pbnRyYW5nZShkYXRhID0gbW9kX3RhYmxlLCBnZ3Bsb3QyOjphZXMoeSA9IGVzdGltYXRlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gbmFtZSwgeW1pbiA9IGxvd2VyUFIsIHltYXggPSB1cHBlclBSLCBzaGFwZSA9IGFzLmZhY3Rvcihjb25kaXRpb24pLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsID0gbmFtZSksIHNpemUgPSAwLjUsIHBvc2l0aW9uID0gZ2dwbG90Mjo6cG9zaXRpb25fZG9kZ2UyKHdpZHRoID0gMC4zKSkgKyAKICAgICAgZ2dwbG90Mjo6c2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IDIwICsgKDE6Y29uZGl0aW9uX25vKSkgKyAKICAgICAgZ2dwbG90Mjo6Y29vcmRfZmxpcCgpICsgZ2dwbG90Mjo6dGhlbWVfYncoKSArIGdncGxvdDI6Omd1aWRlcyhmaWxsID0gIm5vbmUiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSAibm9uZSIpICsgZ2dwbG90Mjo6dGhlbWUobGVnZW5kLnBvc2l0aW9uID0gYygwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSwgbGVnZW5kLmp1c3RpZmljYXRpb24gPSBjKDAsIDEpKSArIGdncGxvdDI6OnRoZW1lKGxlZ2VuZC50aXRsZSA9IGdncGxvdDI6OmVsZW1lbnRfdGV4dChzaXplID0gOSkpICsgCiAgICAgIGdncGxvdDI6OnRoZW1lKGxlZ2VuZC5kaXJlY3Rpb24gPSAiaG9yaXpvbnRhbCIpICsgCiAgICAgIGdncGxvdDI6OnRoZW1lKGxlZ2VuZC5iYWNrZ3JvdW5kID0gZ2dwbG90Mjo6ZWxlbWVudF9ibGFuaygpKSArIAogICAgICBnZ3Bsb3QyOjpsYWJzKHkgPSBsYWJlbCwgeCA9ICIiLCBzaXplID0gbGVnZW5kKSArIAogICAgICBnZ3Bsb3QyOjpzY2FsZV9zaXplX2NvbnRpbnVvdXMoYnJlYWtzID0gYygyMDAsIDIwMDAsIDIwMDAwKSwgZ3VpZGUgPSBndWlkZV9sZWdlbmQoKSkgKyAKICAgICAgZ2dwbG90Mjo6bGFicyhzaGFwZSA9IGNvbmRpdGlvbi5sYWIpICsgZ2dwbG90Mjo6dGhlbWUoYXhpcy50ZXh0LnkgPSBnZ3Bsb3QyOjplbGVtZW50X3RleHQoc2l6ZSA9IDEwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gImJsYWNrIiwgaGp1c3QgPSAwLjUsIGFuZ2xlID0gYW5nbGUpKQogICAgcGxvdCA8LSBwbG90ICsgZ2dwbG90Mjo6YW5ub3RhdGUoInRleHQiLCB5ID0gKG1heChkYXRhJHlpKSArIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heChkYXRhJHlpKSAqIDAuMSkpLCB4ID0gKHNlcSgxLCBncm91cF9ubywgMSkgKyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMyksIGxhYmVsID0gcGFzdGUoIml0YWxpYyhrKT09IiwgbW9kX3RhYmxlJEtbMTpncm91cF9ub10pLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlID0gVFJVRSwgaGp1c3QgPSAicmlnaHQiLCBzaXplID0gMy41KQogIH0KICBlbHNlIHsKICAgIHBsb3QgPC0gZ2dwbG90Mjo6Z2dwbG90KGRhdGEgPSBtb2RfdGFibGUsIGdncGxvdDI6OmFlcyh4ID0gZXN0aW1hdGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBuYW1lKSkgKyBnZ2JlZXN3YXJtOjpnZW9tX3F1YXNpcmFuZG9tKGRhdGEgPSBkYXRhLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZ3Bsb3QyOjphZXMoeCA9IHlpLCB5ID0gbW9kZXJhdG9yLCBzaXplID0gc2NhbGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBtb2RlcmF0b3IpLCBncm91cE9uWCA9IEZBTFNFLCBhbHBoYSA9IGFscGhhKSArIAogICAgICBnZ3Bsb3QyOjpnZW9tX2Vycm9yYmFyaChnZ3Bsb3QyOjphZXMoeG1pbiA9IGxvd2VyUFIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1heCA9IHVwcGVyUFIpLCBoZWlnaHQgPSAwLCBzaG93LmxlZ2VuZCA9IEZBTFNFLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDAuNSwgYWxwaGEgPSAwLjYpICsgZ2dwbG90Mjo6Z2VvbV9lcnJvcmJhcmgoZ2dwbG90Mjo6YWVzKHhtaW4gPSBsb3dlckNMLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtYXggPSB1cHBlckNMKSwgaGVpZ2h0ID0gMCwgc2hvdy5sZWdlbmQgPSBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBicmFuY2guc2l6ZSkgKyBnZ3Bsb3QyOjpnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSAwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIiwgYWxwaGEgPSBhbHBoYSkgKyAKICAgICAgZ2dwbG90Mjo6Z2VvbV9wb2ludChnZ3Bsb3QyOjphZXMoZmlsbCA9IG5hbWUpLCBzaXplID0gcG9pbnQuc2l6ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSAyMSkgKyBnZ3Bsb3QyOjp0aGVtZV9idygpICsgZ2dwbG90Mjo6Z3VpZGVzKGZpbGwgPSAibm9uZSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSAibm9uZSIpICsgZ2dwbG90Mjo6dGhlbWUobGVnZW5kLnBvc2l0aW9uID0gYygxLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCksIGxlZ2VuZC5qdXN0aWZpY2F0aW9uID0gYygxLCAwKSkgKyBnZ3Bsb3QyOjp0aGVtZShsZWdlbmQudGl0bGUgPSBnZ3Bsb3QyOjplbGVtZW50X3RleHQoc2l6ZSA9IDkpKSArIAogICAgICBnZ3Bsb3QyOjp0aGVtZShsZWdlbmQuZGlyZWN0aW9uID0gImhvcml6b250YWwiKSArIAogICAgICBnZ3Bsb3QyOjp0aGVtZShsZWdlbmQuYmFja2dyb3VuZCA9IGdncGxvdDI6OmVsZW1lbnRfYmxhbmsoKSkgKyAKICAgICAgZ2dwbG90Mjo6bGFicyh4ID0gbGFiZWwsIHkgPSAiIiwgc2l6ZSA9IGxlZ2VuZCkgKyAKICAgICAgZ2dwbG90Mjo6c2NhbGVfc2l6ZV9jb250aW51b3VzKGJyZWFrcyA9IGMoMjAwLCAyMDAwLCAyMDAwMCksIGd1aWRlID0gZ3VpZGVfbGVnZW5kKCkpICsgCiAgICAgIGdncGxvdDI6OnRoZW1lKGF4aXMudGV4dC55ID0gZ2dwbG90Mjo6ZWxlbWVudF90ZXh0KHNpemUgPSAxMCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9ICJibGFjayIsIGhqdXN0ID0gMC41LCBhbmdsZSA9IGFuZ2xlKSkKICAgIGlmIChrID09IFRSVUUpIHsKICAgICAgcGxvdCA8LSBwbG90ICsgZ2dwbG90Mjo6YW5ub3RhdGUoInRleHQiLCB4ID0gKG1heChkYXRhJHlpKSArIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF4KGRhdGEkeWkpICogMC4xKSksIHkgPSAoc2VxKDEsIGdyb3VwX25vLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSArIDAuMyksIGxhYmVsID0gcGFzdGUoIml0YWxpYyhrKT09IiwgbW9kX3RhYmxlJEspLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2UgPSBUUlVFLCBoanVzdCA9ICJyaWdodCIsIHNpemUgPSAzLjUpCiAgICB9CiAgfQogIGlmIChjYiA9PSBUUlVFKSB7CiAgICBwbG90IDwtIHBsb3QgKyBnZ3Bsb3QyOjpzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjYnBsKSArIAogICAgICBnZ3Bsb3QyOjpzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGNicGwpCiAgfQogIAogIGlmIChsZWdlbmQub24gPT0gRkFMU0UpewogICAgcGxvdCA8LSBwbG90ICsgZ2dwbG90Mjo6dGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQogIH0KICAKICAKICByZXR1cm4ocGxvdCkKfQoKIyBtb2RfcmVzdWx0IG9sZAoKIycgQHRpdGxlIGdldF9lc3QKIycgQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIGdldHMgZXN0aW1hdGVzIGZyb20gcm1hIG9iamVjdHMgKG1ldGFmb3IpCiMnIEBwYXJhbSBtb2RlbCBybWEubXYgb2JqZWN0CiMnIEBwYXJhbSBtb2QgdGhlIG5hbWUgb2YgYSBtb2RlcmF0b3IuIElmIG1ldGEtYW5hbHlzaXMgKGkuZS4gbm8gbW9kZXJhdG9yLCBzZSBtb2QgPSAiSW50IikKIycgQGF1dGhvciBTaGluaWNoaSBOYWthZ2F3YSAtIHMubmFrYWdhd2FAdW5zdy5lZHUuYXUKIycgQGF1dGhvciBEYW5pZWwgTm9ibGUgLSBkYW5pZWwubm9ibGVAYW51LmVkdS5hdQojJyBAZXhwb3J0CgpnZXRfZXN0IDwtIGZ1bmN0aW9uIChtb2RlbCwgbW9kKSB7CiAgbmFtZSA8LSBmaXJzdHVwKGFzLmNoYXJhY3RlcihzdHJpbmdyOjpzdHJfcmVwbGFjZShyb3cubmFtZXMobW9kZWwkYmV0YSksIHt7bW9kfX0sICIiKSkpCiAgCiAgZXN0aW1hdGUgPC0gYXMubnVtZXJpYyhtb2RlbCRiZXRhKQogIGxvd2VyQ0wgPC0gbW9kZWwkY2kubGIKICB1cHBlckNMIDwtIG1vZGVsJGNpLnViCiAgCiAgdGFibGUgPC0gdGliYmxlOjp0aWJibGUobmFtZSA9IGZhY3RvcihuYW1lLCBsZXZlbHMgPSBuYW1lLCBsYWJlbHMgPSBuYW1lKSwgZXN0aW1hdGUgPSBlc3RpbWF0ZSwgbG93ZXJDTCA9IGxvd2VyQ0wsIHVwcGVyQ0wgPSB1cHBlckNMKQogIAogIHJldHVybih0YWJsZSkKfQoKCiMnIEB0aXRsZSBnZXRfcHJlZAojJyBAZGVzY3JpcHRpb24gRnVuY3Rpb24gdG8gZ2V0IHByZWRpY3Rpb24gaW50ZXJ2YWxzIChjcmVkaWJsaXR5IGludGVydmFscykgZnJvbSBybWEgb2JqZWN0cyAobWV0YWZvcikKIycgQHBhcmFtIG1vZGVsIHJtYS5tdiBvYmplY3QKIycgQHBhcmFtIG1vZCB0aGUgbmFtZSBvZiBhIG1vZGVyYXRvcgojJyBAYXV0aG9yIFNoaW5pY2hpIE5ha2FnYXdhIC0gcy5uYWthZ2F3YUB1bnN3LmVkdS5hdQojJyBAYXV0aG9yIERhbmllbCBOb2JsZSAtIGRhbmllbC5ub2JsZUBhbnUuZWR1LmF1CiMnIEBleHBvcnQKCmdldF9wcmVkIDwtIGZ1bmN0aW9uIChtb2RlbCwgbW9kKSB7CiAgCiAgbmFtZSA8LSBmaXJzdHVwKGFzLmNoYXJhY3RlcihzdHJpbmdyOjpzdHJfcmVwbGFjZShyb3cubmFtZXMobW9kZWwkYmV0YSksIHt7bW9kfX0sICIiKSkpCiAgbGVuIDwtIGxlbmd0aChuYW1lKQogIAogIGlmKGxlbiAhPSAxKXsKICAgIG5ld2RhdGEgPC0gbWF0cml4KE5BLCBuY29sID0gbGVuLCBucm93ID0gbGVuKQogICAgCiAgICBwcmVkIDwtIG1ldGFmb3I6OnByZWRpY3Qucm1hKG1vZGVsLCBuZXdtb2RzID0gZGlhZyhsZW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXUyLmxldmVscyA9IDE6bGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYW1tYTIubGV2ZWxzID0gMTpsZW4pCiAgfQogIGVsc2UgewogICAgcHJlZCA8LSBtZXRhZm9yOjpwcmVkaWN0LnJtYShtb2RlbCkKICB9CiAgbG93ZXJQUiA8LSBwcmVkJGNyLmxiCiAgdXBwZXJQUiA8LSBwcmVkJGNyLnViCiAgCiAgdGFibGUgPC0gdGliYmxlOjp0aWJibGUobmFtZSA9IGZhY3RvcihuYW1lLCBsZXZlbHMgPSBuYW1lLCBsYWJlbHMgPSBuYW1lKSwgbG93ZXJQUiA9IGxvd2VyUFIsIHVwcGVyUFIgPSB1cHBlclBSKQogIHJldHVybih0YWJsZSkKfQoKIycgQHRpdGxlIGZpcnN0dXAKIycgQGRlc2NyaXB0aW9uIFVwcGVyY2FzZSBtb2RlcmF0b3IgbmFtZXMKIycgQHBhcmFtIHggYSBjaGFyYWN0ZXIgc3RyaW5nCiMnIEBhdXRob3IgU2hpbmljaGkgTmFrYWdhd2EgLSBzLm5ha2FnYXdhQHVuc3cuZWR1LmF1CiMnIEBhdXRob3IgRGFuaWVsIE5vYmxlIC0gZGFuaWVsLm5vYmxlQGFudS5lZHUuYXUKIycgQHJldHVybiBSZXR1cm5zIGEgY2hhcmFjdGVyIHN0cmluZyB3aXRoIGFsbCBjb21iaW5hdGlvbnMgb2YgdGhlIG1vZGVyYXRvciBsZXZlbCBuYW1lcyB3aXRoIHVwcGVyIGNhc2UgZmlyc3QgbGV0dGVycwojJyBAZXhwb3J0CmZpcnN0dXAgPC0gZnVuY3Rpb24oeCkgewogIHN1YnN0cih4LCAxLCAxKSA8LSB0b3VwcGVyKHN1YnN0cih4LCAxLCAxKSkKICB4Cn0KCiMnIEB0aXRsZSBnZXRfZGF0YQojJyBAZGVzY3JpcHRpb24gQ29sbGVjdHMgYW5kIGJ1aWxkcyB0aGUgZGF0YSB1c2VkIHRvIGZpdCB0aGUgcm1hLm12IG9yIHJtYSBtb2RlbCBpbiBtZXRhZm9yCiMnIEBwYXJhbSBtb2RlbCBybWEubXYgb2JqZWN0CiMnIEBwYXJhbSBtb2QgdGhlIG1vZGVyYXRvciB2YXJpYWJsZQojJyBAYXV0aG9yIFNoaW5pY2hpIE5ha2FnYXdhIC0gcy5uYWthZ2F3YUB1bnN3LmVkdS5hdQojJyBAYXV0aG9yIERhbmllbCBOb2JsZSAtIGRhbmllbC5ub2JsZUBhbnUuZWR1LmF1CiMnIEByZXR1cm4gUmV0dXJucyBhIGRhdGEgZnJhbWUKIycgQGV4cG9ydAojJwpnZXRfZGF0YSA8LSBmdW5jdGlvbihtb2RlbCwgbW9kKXsKICBYIDwtIGFzLmRhdGEuZnJhbWUobW9kZWwkWCkKICBuYW1lcyA8LSB2YXBwbHkoc3RyaW5ncjo6c3RyX3NwbGl0KGNvbG5hbWVzKFgpLCB7e21vZH19KSwgZnVuY3Rpb24oeCkgcGFzdGUodW5pcXVlKHgpLCBjb2xsYXBzZSA9ICIiKSwgY2hhcmFjdGVyKDFMKSkKICAKICBtb2RlcmF0b3IgPC0gbWF0cml4KG5jb2wgPSAxLCBucm93ID0gZGltKFgpWzFdKQogIAogIGZvcihpIGluIDE6bmNvbChYKSl7CiAgICBtb2RlcmF0b3IgPC0gaWZlbHNlKFhbLGldID09IDEsIG5hbWVzW2ldLCBtb2RlcmF0b3IpCiAgfQogIG1vZGVyYXRvciA8LSBmaXJzdHVwKG1vZGVyYXRvcikKICB5aSA8LSBtb2RlbCR5aQogIHZpIDwtIG1vZGVsJHZpCiAgdHlwZSA8LSBhdHRyKG1vZGVsJHlpLCAibWVhc3VyZSIpCiAgCiAgZGF0YSA8LSBkYXRhLmZyYW1lKHlpLCB2aSwgbW9kZXJhdG9yLCB0eXBlKQogIHJldHVybihkYXRhKQogIAp9CgojJyBAdGl0bGUgbW9kX3Jlc3VsdHMKIycgQGRlc2NyaXB0aW9uIFVzaW5nIGEgbWV0YWZvciBtb2RlbCBvYmplY3Qgb2YgY2xhc3Mgcm1hIG9yIHJtYS5tdiBpdCBjcmVhdGVzIGEgdGFibGUgb2YgbW9kZWwgcmVzdWx0cyBjb250YWluaW5nIHRoZSBtZWFuIGVmZmVjdCBzaXplIGVzdGltYXRlcyBmb3IgYWxsIGxldmVscyBvZiBhIGdpdmVuIGNhdGVnb3JpY2FsIG1vZGVyYXRvciwgdGhlaXIgY29ycmVzcG9uZGluZyBjb25maWRlbmNlIGludGVydmFscyBhbmQgcHJlZGljdGlvbiBpbnRlcnZhbHMKIycgQHBhcmFtIG1vZGVsIHJtYS5tdiBvYmplY3QKIycgQHBhcmFtIG1vZCB0aGUgbmFtZSBvZiBhIG1vZGVyYXRvcjsgcHV0ICJJbnQiIGlmIHRoZSBpbnRlcmNlcHQgbW9kZWwgKG1ldGEtYW5hbHlzaXMpIG9yIG5vIG1vZGVyYXRvcnMuCiMnIEByZXR1cm4gQSBkYXRhIGZyYW1lIGNvbnRhaW5pbmcgYWxsIHRoZSBtb2RlbCByZXN1bHRzIGluY2x1ZGluZyBtZWFuIGVmZmVjdCBzaXplIGVzdGltYXRlLCBjb25maWRlbmNlIGFuZCBwcmVkaWN0aW9uIGludGVydmFscwojJyBAYXV0aG9yIFNoaW5pY2hpIE5ha2FnYXdhIC0gcy5uYWthZ2F3YUB1bnN3LmVkdS5hdQojJyBAYXV0aG9yIERhbmllbCBOb2JsZSAtIGRhbmllbC5ub2JsZUBhbnUuZWR1LmF1CiMnIEBleGFtcGxlcwojJyBcZG9udHJ1bntkYXRhKGVrbG9mKQojJyBla2xvZjwtbWV0YWZvcjo6ZXNjYWxjKG1lYXN1cmU9IlJPTSIsIG4xaT1OX2NvbnRyb2wsIHNkMWk9U0RfY29udHJvbCwKIycgbTFpPW1lYW5fY29udHJvbCwgbjJpPU5fdHJlYXRtZW50LCBzZDJpPVNEX3RyZWF0bWVudCwgbTJpPW1lYW5fdHJlYXRtZW50LAojJyBkYXRhPWVrbG9mKQojJyAjIEFkZCB0aGUgdW5pdCBsZXZlbCBwcmVkaWN0b3IKIycgZWtsb2YkRGF0YXBvaW50PC1hcy5mYWN0b3Ioc2VxKDEsIGRpbShla2xvZilbMV0sIDEpKQojJyAjIGZpdCBhIE1MTVIgLSBhY2NvdXRpbmcgZm9yIHNvbWUgbm9uLWluZGVwZW5kZW5jZQojJyBla2xvZl9NUjwtbWV0YWZvcjo6cm1hLm12KHlpPXlpLCBWPXZpLCBtb2RzPX4gR3JhemVyLnR5cGUtMSwgcmFuZG9tPWxpc3QofjF8RXhwdElELAojJyB+MXxEYXRhcG9pbnQpLCBkYXRhPWVrbG9mKQojJyByZXN1bHRzIDwtIG1vZF9yZXN1bHRzKGVrbG9mX01SLCBtb2QgPSAiR3JhemVyLnR5cGUiKQojJyB9CiMnIEBleHBvcnQKCm1vZF9yZXN1bHRzIDwtIGZ1bmN0aW9uKG1vZGVsLCBtb2QpIHsKICAKICBpZihhbGwoY2xhc3MobW9kZWwpICVpbiUgYygicm1hLm12IiwgInJtYS51bmkiLCAicm1hIikpID09IEZBTFNFKSB7c3RvcCgiU29ycnksIHlvdSBuZWVkIHRvIGZpdCBhIG1ldGFmb3IgbW9kZWwgb2YgY2xhc3Mgcm1hLm12IG9yIHJtYSIpfQogIAogIGRhdGEgPC0gZ2V0X2RhdGEobW9kZWwsIG1vZCkKICAKICAjIEdldCBjb25maWRlbmNlIGludGVydmFscwogIENJIDwtIGdldF9lc3QobW9kZWwsIG1vZCkKICAKICAjIEdldCBwcmVkaWN0aW9uIGludGVydmFscwogIFBJIDwtIGdldF9wcmVkKG1vZGVsLCBtb2QpCiAgCiAgbW9kZWxfcmVzdWx0cyA8LSBsaXN0KG1vZF90YWJsZSA9IGNiaW5kKENJLCBQSVssLTFdKSwgZGF0YSA9IGRhdGEpCiAgCiAgY2xhc3MobW9kZWxfcmVzdWx0cykgPC0gIm9yY2hhcmQiCiAgCiAgcmV0dXJuKG1vZGVsX3Jlc3VsdHMpCiAgCn0KIyBUT0RPIC0gSSB0aGluayB3ZSBjYW4gaW1wcm92ZSBgbW9kYCBiaXQ/CgojJyBAdGl0bGUgcHJpbnQub3JjaGFyZAojJyBAZGVzY3JpcHRpb24gUHJpbnQgbWV0aG9kIGZvciBjbGFzcyAnb3JjaGFyZCcKIycgQHBhcmFtIG9iamVjdCB4IGFuIFIgb2JqZWN0IG9mIGNsYXNzIG9yY2hhcmQKIycgQHBhcmFtIC4uLiBPdGhlciBhcmd1bWVudHMgcGFzc2VkIHRvIHByaW50CiMnIEBhdXRob3IgU2hpbmljaGkgTmFrYWdhd2EgLSBzLm5ha2FnYXdhQHVuc3cuZWR1LmF1CiMnIEBhdXRob3IgRGFuaWVsIE5vYmxlIC0gZGFuaWVsLm5vYmxlQGFudS5lZHUuYXUKIycgQHJldHVybiBSZXR1cm5zIGEgZGF0YSBmcmFtZQojJyBAZXhwb3J0CiMnCnByaW50Lm9yY2hhcmQgPC0gZnVuY3Rpb24ob2JqZWN0LCAuLi4pewogIHJldHVybihvYmplY3QkbW9kX3RhYmxlKQp9CgpgYGAKCiMjIExvYWRpbmcgcmF3IGRhdGEgYW5kIGNyZWF0aW5nIGEgbGlzdCBvZiB0cmFpdCBkYXRhCgpCZWxvdyB3ZSBzZWUgc3ViLXN0cmFpbiBpbmZvcm1hdGlvbiBhbmQgc2FtcGxlIHNpemUgZm9yIGVhY2ggc3ViLXN0cmFpbnMKCmBgYHtyfQoKIyBsb2FkaW5nIGRhdGEKYWxsb21ldHJ5IDwtIHJlYWRSRFMoaGVyZSgiZGF0YS9hbGxvbWV0cnlORVcucmRzIikpCgoKI1NURVAgMSByZW1vdmUgcm93cyB3aXRoIG1pc3NpbmcgIGRhdGEgYW5kIE5BIAphbGxvbWV0cnluZXc8LWFsbG9tZXRyeVtjb21wbGV0ZS5jYXNlcyhhbGxvbWV0cnkpLF0KCiMgZ2V0dGluZyByaWQgb2YgTkEgZm9yIGRhdGFfcG9pbnQgYW5kIHdlaWdodAoKYWxsb21ldHJ5bmV3MiA8LSBhbGxvbWV0cnluZXcgJT4lIAogIGZpbHRlcighaXMubmEoZGF0YV9wb2ludCksICFpcy5uYSh3ZWlnaHQpKSAlPiUgCiAgZ3JvdXBfYnkocGFyYW1ldGVyX25hbWUsIHNleCwgbWV0YWRhdGFfZ3JvdXAsIHN0cmFpbl9uYW1lKSAlPiUKICBtdXRhdGUoY291bnQgPSBuKCkpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGdyb3VwX2J5KHBhcmFtZXRlcl9uYW1lKSAlPiUgIyBhZGp1c3RpbmcgaW50ZXJ2YWwgZGF0YQogIG11dGF0ZShtaW5fdmFsID0gbWluKGRhdGFfcG9pbnQpLAogICAgICAgICBkYXRhX3BvaW50MiA9IGlmX2Vsc2UobWluX3ZhbCA+IDAsIGRhdGFfcG9pbnQsIGRhdGFfcG9pbnQgKyBhYnMobWluX3ZhbCkpLAogICAgICAgICBtaW5fdmFsMiA9IG1pbiggZGF0YV9wb2ludFtkYXRhX3BvaW50IT1taW4oZGF0YV9wb2ludCldKSwKICAgICAgICAgZGF0YV9wb2ludDIgPSBpZl9lbHNlKG1pbl92YWwgPT0gMCwgZGF0YV9wb2ludDIgKyBtaW5fdmFsMiwgZGF0YV9wb2ludDIpLAogICAgICAgICByYXRpb19pbnQgPSAgaWZfZWxzZShtaW5fdmFsID4gMCwgInJhdGlvIiwgImludGVydmFsIiksCiAgICAgICAgIG5ld19taW4gPSBtaW4oZGF0YV9wb2ludDIpLAogICAgICAgICBubWV0YSA9IG5fZGlzdGluY3QobWV0YWRhdGFfZ3JvdXApLAogICAgICAgICBuc3RyYWluID0gbl9kaXN0aW5jdChzdHJhaW5fbmFtZSksCiAgICAgICAgIHNleCA9IGFzLmZhY3RvcihzZXgpLAogICAgICAgICBwYXJhbWV0ZXJfbmFtZSA9IGlmX2Vsc2UocGFyYW1ldGVyX25hbWUgPT0gIkxhdGVuY3kgdG8gZmFsbF9NZWFuIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGF0ZW5jeSB0byBmYWxsIG1lYW4iICAsIHBhcmFtZXRlcl9uYW1lKSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZmlsdGVyKGNvdW50ID4gNDkpICU+JSAjIHRoaXMgY2FuIGJlIGFkanVzdGVkCiAgZmlsdGVyKHBhcmFtZXRlcl9uYW1lICE9ICJCTUMvQm9keSB3ZWlnaHQiLCAKICAgICAgICAgcGFyYW1ldGVyX25hbWUgIT0gIkJvZHkgd2VpZ2h0IiwgIAogICAgICAgICBwYXJhbWV0ZXJfbmFtZSAhPSAiQm9keSBXZWlnaHQiLCAKICAgICAgICAgcGFyYW1ldGVyX25hbWUgIT0gIkJvZHkgd2VpZ2h0IGFmdGVyIGV4cGVyaW1lbnQiICwgCiAgICAgICAgIHBhcmFtZXRlcl9uYW1lICE9ICJCb2R5IHdlaWdodCBiZWZvcmUgZXhwZXJpbWVudCIsCiAgICAgICAgIHBhcmFtZXRlcl9uYW1lICE9ICJUZXN0IGR1cmF0aW9uIikgJT4lIAogIGZpbHRlcighaXMuaW5maW5pdGUoZGF0YV9wb2ludDIpLCAhaXMuaW5maW5pdGUobG9nKGRhdGFfcG9pbnQyKSkpICMgcmVtb3ZpbmcgaW5maXRlIGFuZCAwCgojIGRpbShhbGxvbWV0cnkpCiMgZGltKGFsbG9tZXRyeW5ldykKIyBkaW0oYWxsb21ldHJ5bmV3MikKIyAKIyAjIHRoZSBudW1iZXIgb2YgdHJhaXRzCiMgbGVuZ3RoKHVuaXF1ZShhbGxvbWV0cnluZXcyJHBhcmFtZXRlcl9uYW1lKSkKIyAKIyAjIHRoZSBudW1iZXIgb2Ygc3Vic3RyYWlucwojIGxlbmd0aCh1bmlxdWUoYWxsb21ldHJ5bmV3MiRzdHJhaW5fbmFtZSkpCiMgc3RyYWluIGluZm9ybWF0aW9uCnVuaXF1ZShhbGxvbWV0cnluZXcyJHN0cmFpbl9uYW1lKQoKIyAjIGNoZWNrIHRoZXJlIGlzIG5vIDAKIyBzdW0oaXMuaW5maW5pdGUobG9nKGFsbG9tZXRyeW5ldzIkZGF0YV9wb2ludDIpKSkKCiMgIyB0aGUgbnVtYmVyIG9mIGludGVydmFsIHNjYWxlIHRyYWl0cwojIGFsbG9tZXRyeW5ldzIgJT4lIGdyb3VwX2J5KHBhcmFtZXRlcl9uYW1lKSAlPiUgc3VtbWFyaXNlKHJhdGlvX2ludCA9IHJhdGlvX2ludFsxXSkgLT4gc3VtX3JpCiMgc3VtKHN1bV9yaSRyYXRpb19pbnQgPT0gImludGVydmFsIikKCgojc3BsaXQgZGF0YWZyYW1lIGJ5IHBhcmFtZXRlciB0byBnZW5lcmF0ZSBhIGxpc3Qgb2YgZGZzCiNhbGxfbGlzdDwtc3BsaXQoYWxsb21ldHJ5bmV3MiwgYWxsb21ldHJ5bmV3MiRwYXJhbWV0ZXJfbmFtZSkKCiNzYXZlUkRTKGFsbF9saXN0LCBmaWxlID0gaGVyZSgiZGF0YSIsICJkYXRfbGlzdDIucmRzIikpCmBgYAoKIyMgTG9hZGluZyBhIGxpc3Qgb2YgdHJhaXQgZGF0YSBhbmQgZ3JvdXAgY2F0ZWdvcnkKCmBgYHtyLCAgZXZhbD1GQUxTRX0KIyBsb2FkaW5nIGRhdGEKZGF0X2xpc3QgPC0gcmVhZFJEUyhoZXJlKCJkYXRhL2RhdF9saXN0Mi5yZHMiKSkKCiMgZ3JvdXBpbmcgZm9yIGNhdGVnb3J5IGFuZCBwYXJhbWV0ZXJfZ3JvdXAgKHRoaXMgaXMgZnJvbSBaYWppdHNjaGVrIGV0IGFsLiAyMDIwIGVMaWZlOyBzbGlnaHRseSBtb2RmaWVkKQpkYXRfY2F0ZWdvcnk8LXJlYWRfY3N2KGhlcmUoImRhdGEvY2F0ZW9ncnlfcGFyYW1ldGVyMy5jc3YiKSkgCmBgYAoKIyBEYXRhIHByZXBhcmF0aW9uIHsudGFic2V0fQoKIyMgT2J0YWluaW5nIGludGVyc2VwY3RzLCBzbG9wZXMsIHJlc2lkdWFsIFNEcyBhbmQgbW9kZWwgZml0cwoKYGBge3IsICBldmFsPUZBTFNFfQoKI3J1biBmdW5jdGlvbiBhY3Jvc3MgbGlzdCBvZiBtYXRyaWNlcwpwcm9jZXNzaW5nIDwtbWFwX2RmcihkYXRfbGlzdCwgZ2V0X3BhcmFfcG9zcykKZGF0IDwtIGRhdGEuZnJhbWUocHJvY2Vzc2luZywgcm93Lm5hbWVzID0gTlVMTCkKCmRhdCAlPiUgbGVmdF9qb2luKGRhdF9jYXRlZ29yeSwgYnkgPSAoInBhcmFtZXRlcl9uYW1lIiA9ICJwYXJhbWV0ZXJfbmFtZSIpICkgJT4lIGFycmFuZ2UoQ2F0ZWdvcnkpICAtPiBkYXQKCmRpbShkYXQpCgojd3JpdGVfY3N2KGRhdCwgaGVyZSgiZGF0YS90ZXN0NC5jc3YiKSkKd3JpdGVfY3N2KGRhdCwgaGVyZSgiZGF0YS9kYXRhX3BhcmFtZXRlcnM3LmNzdiIpKQoKCiMgZmlyc3QgZ2V0dGluZyBwIHZhbHVlcyAtIHRoZSBjb250cmFzdHMgYmV0d2VlbiBtYWxlcyBhbmQgZmVtYWxlcyBmb3IgCgpkYXQgPC1yZWFkX2NzdihoZXJlKCJkYXRhL2RhdGFfcGFyYW1ldGVyczcuY3N2IikpCgojYXNzZXNzIG51bWJlciBvZiB0cmFpdHMgd2l0aCBzaWcgc2hpZnRzIGluIGludGVyY2VwdCBhbmQgc2xvcGUKCiMgZ2V0dGluZyBsblZSIHRvIGNvbXBhcmUgU0RzIGFuZCBTRCBhbmQgWnIgKHZhcmlhbmNlIGZvciBacikKCmRhdCAlPiUgbXV0YXRlKGxuVlIgPSBsb2coZl9zZC9tX3NkKSArIDEvKDIqKGZfbi0zKSkgLSAxLygyKihtX24tMykpLCAKICAgICAgICAgICAgICAgVmxuVlIgPSAxLygyKihmX24tMykpICsgMS8oMioobV9uLTMpKSwgCiAgICAgICAgICAgICAgIGxvd19sblZSID0gbG5WUiAtIHFub3JtKDAuOTc1KSpWbG5WUiwgCiAgICAgICAgICAgICAgIGhpZ2hfbG5WUiA9IGxuVlIgKyBxbm9ybSgwLjk3NSkqVmxuVlIsCiAgICAgICAgICAgICAgIHRfdmFsX3NkID0gbG5WUi9zcXJ0KFZsblZSKSwKICAgICAgICAgICAgICAgcF92YWxfc2QgPSAyKigxLXB0KGFicyh0X3ZhbF9zZCksIGZfbi0xICsgbV9uLTEpKSwKICAgICAgICAgICAgICAgIyByIHNxdWFyZWQKICAgICAgICAgICAgICAgWnIgPSBhdGFuaChyX20pLAogICAgICAgICAgICAgICBWWnIgPSAxLygoZl9uICsgbV9uKSAtIDMpCiAgICAgICAgICAgICAgICkgLT4gZGF0Cgp3cml0ZV9jc3YoZGF0LCBoZXJlKCJkYXRhL2RhdGFfcGFyYW1ldGVyczguY3N2IikpCmBgYAoKIyMgRGF0YXNldCBhbmQgbWV0YS1kYXRhCgpgYGB7cn0KIyBsb2FkaW5nIGRhdGEKZGF0IDwtIHJlYWRfY3N2KGhlcmUoImRhdGEvZGF0YV9wYXJhbWV0ZXJzOC5jc3YiKSkKIyBjcmVhdGluZyBvYnNlcnZhdGlvbiBsZXZlbCByYW5kb20gZWZmZWN0CmRhdCRvYnMgPC0gMTpkaW0oZGF0KVsxXQojIG1ha2luZyBjaGFyYWN0ZXIgc3RyaW5ncyBpbnRvIGZhY3RvcnMKZGF0IDwtIGRhdCAlPiUgbXV0YXRlX2lmKGlzLmNoYXJhY3RlciwgYXMuZmFjdG9yKSAKIyB2aXN1YWxpemluZwprYWJsZShkYXQsICJodG1sIikgJT4lIAogIGthYmxlX3N0eWxpbmcoInN0cmlwZWQiLCBwb3NpdGlvbiA9ICJsZWZ0IikgJT4lIAogIHNjcm9sbF9ib3god2lkdGggPSAiMTAwJSIsIAogICAgaGVpZ2h0ID0gIjI1MHB4IikKCmBgYAoKLSAgICoqcGFyYW1ldGVyX25hbWUqKjogdGhlIG5hbWUgb2YgcGhlbm90eXBpYyB0cmFpdHMKLSAgICoqZl9uKio6IHRoZSBudW1iZXIgb2YgZmVtYWxlcyBmb3IgYSBwYXJ0aWN1bGFyIHRyYWl0Ci0gICAqKm1fbioqOiB0aGUgbnVtYmVyIG9mIG1hbGVzIGZvciBhIHBhcnRpY3VsYXIgdHJhaXQKLSAgICoqZl9pbnRlcmNlcHQqKjogdGhlIGludGVyY2VwdCAocGhlbm90eXBpYyBtZWFuKSBmb3IgZmVtYWxlcwotICAgKipmX2ludGVyY2VwdF9zZSoqOiBzdGFuZGFyZCBlcnJvciBmb3IgdGhlIGludGVyY2VwdCAocGhlbm90eXBpYyBtZWFuKSBmb3IgZmVtYWxlcwotICAgKipmX3Nsb3BlKio6IHRoZSBzbG9wZSBmb3IgZmVtYWxlcwotICAgKipmX3Nsb3BlX3NlKio6IHN0YW5kYXJkIGVycm9yIGZvciB0aGUgc2xvcGUgZm9yIGZlbWFsZXMKLSAgICoqbV9pbnRlcmNlcHQqKjogdGhlIGludGVyY2VwdCAocGhlbm90eXBpYyBtZWFuKSBmb3IgbWFsZXMKLSAgICoqbV9pbnRlcmNlcHRfc2UqKjogc3RhbmRhcmQgZXJyb3IgZm9yIHRoZSBpbnRlcmNlcHQgKHBoZW5vdHlwaWMgbWVhbikgZm9yIG1hbGVzCi0gICAqKm1fc2xvcGUqKjogdGhlIHNsb3BlIGZvciBtYWxlcwotICAgKiptX3Nsb3BlX3NlKio6IHN0YW5kYXJkIGVycm9yIGZvciB0aGUgc2xvcGUgZm9yIG1hbGVzCi0gICAqKmZtX2RpZmZfaW50Kio6IGRpZmZlcmVuY2UgaW4gaW50ZXJjZXB0cyBiZXR3ZWVuIGZlbWFsZXMgYW5kIG1hbGVzCi0gICAqKmZtX2RpZmZfaW50X3NlKio6IHN0YW5kYXJkIGVycm9yIGZvciB0aGUgZGlmZmVyZW5jZSBpbiBpbnRlcmNlcHRzIGJldHdlZW4gZmVtYWxlcyBhbmQgbWFsZXMKLSAgICoqZm1fZGlmZl9pbnRfcCoqOiBwIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBmbV9kaWZmX2ludAotICAgKipmbV9kaWZmX3Nsb3BlKio6IGRpZmZlcmVuY2UgaW4gc2xvcGVzIGJldHdlZW4gZmVtYWxlcyBhbmQgbWFsZXMKLSAgICoqZm1fZGlmZl9zbG9wZV9zZSoqOiBzdGFuZGFyZCBlcnJvciBmb3IgZm9yIHRoZSBkaWZmZXJlbmNlIGluIGludGVyY2VwdHMgYmV0d2VlbiBmZW1hbGVzIGFuZCBtYWxlcwotICAgKipmbV9kaWZmX3Nsb3BlX3AqKjogcCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggZm1fZGlmZl9zbG9wZQotICAgKipiYXRjaF9zZCoqOiB0aGUgc3F1YXJlLXJvb3Qgb2YgdGhlIHZhcmlhbmNlIGNvbXBvbmVudCBmb3IgImJhdGNoIiAoc2VlIHRoZSB0ZXh0KQotICAgKipmX3NkKio6IGZlbWFsZSByZXNpZHVhbCBzdGFuZGFyZCBkZXZpYXRpb24KLSAgICoqbV9zZCoqOiBmZW1hbGUgcmVzaWR1YWwgc3RhbmRhcmQgZGV2aWF0aW9uCi0gICAqKnJfbSoqOiBtYXJnaW5hbCBSIHNxdWFyZWQgKHZhcmlhbmNlIGFjY291bnRlZCBmb3IgYnkgZml4ZWQgZWZmZWN0cykKLSAgICoqcl9jKio6IGNvbmRpdGlvbmFsIFIgc3F1YXJlZCAodmFyaWFuY2UgYWNjb3VudGVkIGZvciBieSBmaXhlZCBhbmQgcmFuZG9tIGVmZmVjdHMpCi0gICAqKkNhdGVnb3J5Kio6IDkgZnVuY3Rpb24gY2F0ZWdvcmllcyAoc2VlIHRoZSB0ZXh0KQotICAgKipwYXJhbWV0ZXJfZ3JvdXAqKjogR3JvdXBpbmcgZm9yIG5vbi1pbmRlcGVuZGVudCB0cmFpdHMKLSAgICoqbG5WUioqOiBsb2cgcmF0aW8gYmV0d2VlbiBmX3NkIGFuZCBtX3NkCi0gICAqKlZsblZSKio6IHRoZSBzYW1wbGluZyB2YXJpYW5jZSBmb3IgbG5WUgotICAgKipsb3dfbG5WUioqOiBsb3dlciBjb25maWRlbmNlIGxpbWl0IGZvciBsblZSCi0gICAqKmhpZ2hfbG5WUioqOiB1cHBlciBjb25maWRlbmNlIGxpbWl0IGZvciBsblZSCi0gICAqKnRfdmFsX3NkKio6IHQgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCBsblZSIGFuZCBWbG5WUgotICAgKipwX3ZhbF9zZCoqOiBwIHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggbG5WUiBhbmQgVmxuVlIKLSAgICoqWnIqKjogdHJhbnNmb3JtZWQgdmFsdWUgb2Ygc3FydChyX2MpCi0gICAqKlZacioqOiBzYW1wbGluZyB2YXJpYW5jZSBmb3IgWnIKLSAgICoqb2JzKio6IHVuaXF1ZSBvYnNlcnZhdGlvbiBsZXZlbCBJRAoKIyMgRXh0cmE6IGRhdGFzZXQgZm9yIGNvbXBhcmluZyBtb2RlbHMgd2l0aCBhbmQgd2lob3V0IHN1YnN0cmFpbnMKCmBgYHtyLCBldmFsID0gRkFMU0V9CgpzaG9ydF9saXN0IDwtIGRpc2NhcmQoZGF0X2xpc3QsIH4gLnhbWyJuc3RyYWluIl1dW1sxXV0gPT0gMSkKCnByb2Nlc3NpbmcyIDwtbWFwX2RmcihzaG9ydF9saXN0LCBnZXRfcGFyYV9wb3NzMikKZGF0X3Nob3J0IDwtIGRhdGEuZnJhbWUocHJvY2Vzc2luZzIsIHJvdy5uYW1lcyA9IE5VTEwpCgpkYXRfc2hvcnQgJT4lIGxlZnRfam9pbihkYXRfY2F0ZWdvcnksIGJ5ID0gKCJwYXJhbWV0ZXJfbmFtZSIgPSAicGFyYW1ldGVyX25hbWUiKSApICU+JSBhcnJhbmdlKENhdGVnb3J5KSAgLT4gZGF0X3Nob3J0CgpkaW0oZGF0X3Nob3J0KQoKI3dyaXRlX2NzdihkYXQsIGhlcmUoImRhdGEvdGVzdDQuY3N2IikpCndyaXRlX2NzdihkYXRfc2hvcnQsIGhlcmUoImRhdGEvZGF0YV9jb21wYXJpc2lvbi5jc3YiKSkKYGBgCgoKIyBEYXRhIGFuYWx5c2lzIHsudGFic2V0fQoKIyMgUHJlcGFyYXRpb24gZm9yIGNhdGVnb3JpemluZyBpbnRvIHNjZW5hcmlvcwoKSGVyZSwgd2UgbWVyZ2UgcCB2YWx1ZXMgZm9yIG5vbi1pbmRlcGVuZGVudCAoY2xvc2VseSByZWxhdGVkIHRyYWl0cykgdXNpbmcgdGhlIGN1c3RvbSBmdW5jdGlvbnMgZm9yIG1lcmdpbmcgcCB2YWx1ZXMgdmlhIHRoZSBgcG9vbHJgIHBhY2thZ2UuCgpgYGB7cn0KIyBoZXJlIHdlIG5lZWQgdG8gY29sbGFwc2UgcCB2YWx1ZXMgd2hpY2ggYXJlIHJlbGF0ZWQKIyBzcGxpdCBkYXRhIGludG8gMiBvbmVzIHdpdGggcmVwbGljYXRpb25zIHdpdGhpbiBwYXJhbWV0ZXJfZ3JvdXAKCmRhdCAlPiUgZ3JvdXBfYnkocGFyYW1ldGVyX2dyb3VwKSAlPiUgbXV0YXRlKGNvdW50ID0gbigpKSAtPiBkYXQKIyAKZGF0MSA8LSBkYXRbd2hpY2goZGF0JGNvdW50ID09IDEpLCBdCiMgCiNkaW0oZGF0MSkKCiMgIHRha2luZyBvdXQgaW5kZXBlbmRlbnQgdHJhaXRzCmRhdDIgPC0gZGF0Wy13aGljaChkYXQkY291bnQgPT0gMSksIF0KCiMgbmVzdGluZyBkYXRhIGludG8gYSBsb3Qgb2YgZGF0YSBzZXRzIGFuZCBhcHBseSBwX21vZCBmdW5jdGlvbgpuX2RhdDIgPC0gZGF0MiAlPiUgZ3JvdXBfYnkocGFyYW1ldGVyX2dyb3VwKSAlPiUgIG5lc3QoKQoKIyBmdW5jdGlvbiB0byBnZXQgbWVyZ2VkIHAgdmFsdWUgZm9yIGludGVyY2VwdHMKcF9tb2RfaW50IDwtZnVuY3Rpb24oZGF0YSl7CiAgCiAgbGVuIDwtIGRpbShkYXRhKVsxXQogIFJtYXQgPC0gbWF0cml4KDAuOCwgbnJvdyA9IGxlbiwgbmNvbCA9IGxlbikKICBkaWFnKFJtYXQpIDwtIDEKICAKICBwX21vZCA8LSBmaXNoZXIoZGF0YSRmbV9kaWZmX2ludF9wLCBhZGp1c3QgPSAibGlqaSIsIFIgPSBSbWF0KQogIHA8LSBwX21vZCRwCiAgcmV0dXJuKHApCiAgCn0KCgojIGZ1bmN0aW9uIHRvIGdldCBtZXJnZWQgcCB2YWx1ZSBmb3Igc2xvcGVzCnBfbW9kX3NscCA8LWZ1bmN0aW9uKGRhdGEpewogIAogIGxlbiA8LSBkaW0oZGF0YSlbMV0KICBSbWF0IDwtIG1hdHJpeCgwLjgsIG5yb3cgPSBsZW4sIG5jb2wgPSBsZW4pCiAgZGlhZyhSbWF0KSA8LSAxCiAgCiAgcF9tb2QgPC0gZmlzaGVyKGRhdGEkZm1fZGlmZl9zbG9wZV9wLCBhZGp1c3QgPSAibGlqaSIsIFIgPSBSbWF0KQogIHA8LSBwX21vZCRwCiAgcmV0dXJuKHApCiAgCn0KCiMgZnVuY3Rpb24gdG8gZ2V0IG1lcmdlZCBwIHZhbHVlIGZvciBTRApwX21vZF9zZCA8LWZ1bmN0aW9uKGRhdGEpewogIAogIGxlbiA8LSBkaW0oZGF0YSlbMV0KICBSbWF0IDwtIG1hdHJpeCgwLjgsIG5yb3cgPSBsZW4sIG5jb2wgPSBsZW4pCiAgZGlhZyhSbWF0KSA8LSAxCiAgCiAgcF9tb2QgPC0gZmlzaGVyKGRhdGEkcF92YWxfc2QsIGFkanVzdCA9ICJsaWppIiwgUiA9IFJtYXQpCiAgcDwtIHBfbW9kJHAKICByZXR1cm4ocCkKICAKfQoKCiMgbWVyZ2VkIGRhdDIKbV9kYXQyIDwtIG5fZGF0MiAgJT4lIG11dGF0ZShtZXJnZWRfcF9zZCA9IG1hcF9kYmwoZGF0YSwgcF9tb2Rfc2QpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRfcF9pbnQgPSBtYXBfZGJsKGRhdGEsIHBfbW9kX2ludCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkX3Bfc2xwID0gbWFwX2RibChkYXRhLCBwX21vZF9zbHApCikKCmBgYAoKIyMgVGhlIG51bWJlciBvZiBjYXNlcyBTY2VuYXJpbyBBCgpgYGB7cn0KCiMgZnVsbCBkYXRhc2V0CmRhdF9zbG9wZXMgPC1kYXQgJT4lCiAgZmlsdGVyIChmbV9kaWZmX3Nsb3BlX3AgPD0gMC4wNSAmIGZtX2RpZmZfaW50X3AgPiAwLjA1KQoKIzE3IG91dCBvZiAzNjMgdHJhaXRzIHNpZyBzbG9wZSBkaWZmIC0gc2NlbmFyaW8gQQpucm93KGRhdF9zbG9wZXMpCgojIHJlZHVjZWQgZGF0YXNldApkYXRfc2xvcGVzMSA8LWRhdDEgJT4lCiAgZmlsdGVyIChmbV9kaWZmX3Nsb3BlX3AgPD0gMC4wNSAmIGZtX2RpZmZfaW50X3AgPiAwLjA1KQoKZGF0X3Nsb3BlczIgPC1tX2RhdDIgJT4lCiAgZmlsdGVyIChtZXJnZWRfcF9zbHAgPD0gMC4wNSAmIG1lcmdlZF9wX2ludCA+IDAuMDUpCgojMTEgb3V0IG9mIDIxOSB0cmFpdHMgc2lnIHNsb3BlIGRpZmYgLSBzY2VuYXJpbyBBCm5yb3coZGF0X3Nsb3BlczEpICsgbnJvdyhkYXRfc2xvcGVzMikgCmBgYAoKIyMgVGhlIG51bWJlciBvZiBTY2VuYXJpbyBCCgpgYGB7cn0KIyBmdWxsIGRhdGFzZXQKZGF0X2ludDwtIGRhdCAlPiUKICBmaWx0ZXIgKGZtX2RpZmZfaW50X3AgPD0gMC4wNSAmIGZtX2RpZmZfc2xvcGVfcCA+MC4wNSkKCiMxNTQgb3V0IG9mIDM2MyB0cmFpdHMgc2lnIGludGVyY2VwdCBkaWZmICBzYW1lIHNsb3BlIC0gc2NlbmFyaW8gQgpucm93KGRhdF9pbnQpIAoKIyByZWR1Y2VkIGRhdGFzZXQKZGF0X2ludDE8LSBkYXQxICU+JQogIGZpbHRlciAoZm1fZGlmZl9pbnRfcCA8PSAwLjA1ICYgZm1fZGlmZl9zbG9wZV9wID4wLjA1KQoKZGF0X2ludDIgPC1tX2RhdDIgJT4lCiAgZmlsdGVyIChtZXJnZWRfcF9pbnQgPD0gMC4wNSAmIG1lcmdlZF9wX3NscCA+IDAuMDUpCgojOTMgb3V0IG9mIDIxOSB0cmFpdHMgc2lnIGludGVyY2VwdCBkaWZmICBzYW1lIHNsb3BlIC0gc2NlbmFyaW8gQgpucm93KGRhdF9pbnQxKSArIG5yb3coZGF0X2ludDIpIApgYGAKCiMjIFRoZSBudW1iZXIgb2YgU2NlbmFyaW8gQwoKYGBge3J9CiMgZnVsbCBkYXRhc2V0CmRhdF9pbnRTbG9wZXM8LWRhdCAlPiUKICBmaWx0ZXIgKGZtX2RpZmZfaW50X3AgPD0gMC4wNSAmIGZtX2RpZmZfc2xvcGVfcCA8PSAwLjA1KQoKIzcwIG91dCBvZiAzNjMgc2lnIGludGVyY2VwdCBhbmQgc2xvcGUgZGlmZiAtIHNjZW5hcmlvIEMKbnJvdyhkYXRfaW50U2xvcGVzKQoKIyByZWR1Y2VkIGRhdGFzZXQKZGF0X2ludFNsb3BlczE8LWRhdDEgJT4lCiAgZmlsdGVyIChmbV9kaWZmX2ludF9wIDw9IDAuMDUgJiBmbV9kaWZmX3Nsb3BlX3AgPD0gMC4wNSkKCmRhdF9pbnRTbG9wZXMyIDwtbV9kYXQyICU+JQogIGZpbHRlciAobWVyZ2VkX3BfaW50IDw9IDAuMDUgJiBtZXJnZWRfcF9zbHAgPD0gMC4wNSkKCiM1NyBvdXQgb2YgMjE5IHNpZyBpbnRlcmNlcHQgYW5kIHNsb3BlIGRpZmYgLSBzY2VuYXJpbyBDCm5yb3coZGF0X2ludFNsb3BlczEpKyBucm93KGRhdF9pbnRTbG9wZXMyKSAKYGBgCgojIyBOb3QgaW4gdGhlc2Ugc2NlbmFyaW9zCgpgYGB7cn0KIyBmdWxsIGRhdGFzZXQKZGF0X2ludHNsb3Blc05TPC0gZGF0ICU+JQogIGZpbHRlciAoZm1fZGlmZl9zbG9wZV9wID4wLjA1ICYgZm1fZGlmZl9pbnRfcCA+IDAuMDUpCiMxMjIgb3V0IG9mIDM2MyAtIG5vIHNpZyBkaWZmZXJlbmNlIGJldHdlZW4gaW50ZXJjZXB0IGFuZCBzbG9wZSAtIHNjZW5hcmlvIEQKbnJvdyhkYXRfaW50c2xvcGVzTlMpIAoKIyByZWR1Y2VkIGRhdGFzZXQKZGF0X2ludHNsb3Blc05TMTwtIGRhdDEgJT4lCiAgZmlsdGVyIChmbV9kaWZmX3Nsb3BlX3AgPjAuMDUgJiBmbV9kaWZmX2ludF9wID4gMC4wNSkKCmRhdF9pbnRzbG9wZXNOUzIgPC1tX2RhdDIgJT4lCiAgZmlsdGVyIChtZXJnZWRfcF9pbnQgPiAwLjA1ICYgbWVyZ2VkX3Bfc2xwID4gMC4wNSkKCiM1OCBvdXQgb2YgMjE5IG5vIHNpZyBkaWZmZXJlbmNlIGJldHdlZW4gaW50ZXJjZXB0IGFuZCBzbG9wZSAtIHNjZW5hcmlvIEQKbnJvdyhkYXRfaW50c2xvcGVzTlMxKSArIG5yb3coZGF0X2ludHNsb3Blc05TMikgCmBgYAoKIyMgU2V4IGRpZmZlcmVuY2UgaW4gcmVzaWR1YWwgU0QKCmBgYHtyfQojIGZ1bGwgZGF0YXNldAojIDI0OSBvdXQgb2YgMzYzIHNpZ25maWNhbnQgZGlmZmVyZW5jZXMgaW4gcmVzaWR1YWwgU0RzCmxlbmd0aCh3aGljaChkYXQkcF92YWxfc2QgPD0gMC4wNSkpCiNoaXN0KGxvZyhkYXQkcF92YWxfc2QpKSAjIHAgPSAwLjA1IH4gLSAzCgojIDE1NCBvZiBvdXQgb2YgMjE5IHNpZ25maWNhbnQgZGlmZmVyZW5jZXMgaW4gcmVzaWR1YWwgU0RzCmxlbmd0aCh3aGljaChtX2RhdDIkbWVyZ2VkX3Bfc2QgPD0gMC4wNSkpICsgbGVuZ3RoKHdoaWNoKGRhdDEkcF92YWxfc2QgPD0gMC4wNSkpCmBgYAoKIyMgQ3JlYXRpbmcgRmlndXJlIDIKCmBgYHtyLCBldmFsID0gRiwgZmlnLmhlaWdodD0gOH0KCiMgc2V0IGNvbG91ciBmb3IgbWFsZXMgYW5kIGZlbWFsZXMKCmNvbG91cnMgPC0gYygiI0Q1NUUwMCIsICIjMDA5RTczIikgIyBjKCIjODgyMjU1IiwiI0U2OUYwMCIpIApjb2xvdXJzMiA8LWMoIiNENTVFMDAiLCAiIzdEMjZDRCIsICIjMDA5RTczIikKCiNzZXggYmlhcyBpbiBzbG9wZSBwYXJhbWV0ZXIgdW5kZXIgc2NlbmFyaW8gQQpkYXRfcDE8LWRhdF9zbG9wZXMlPiUKICBncm91cF9ieV9hdCh2YXJzKENhdGVnb3J5KSkgJT4lCiAgc3VtbWFyaXNlKG1hbGViaWFzID0gc3VtKG1fc2xvcGUgPiBmX3Nsb3BlKSwgCiAgICAgICAgICAgIGZlbWFsZWJpYXMgPSBzdW0oZl9zbG9wZSA+IG1fc2xvcGUpLCAKICAgICAgICAgICAgdG90YWw9IG1hbGViaWFzICsgZmVtYWxlYmlhcywgCiAgICAgICAgICAgIG1hbGVwZXJjZW50ID0gbWFsZWJpYXMqMTAwL3RvdGFsLCAKICAgICAgICAgICAgZmVtYWxlcGVyY2VudCA9IGZlbWFsZWJpYXMqMTAwL3RvdGFsKSAgCgoKZGF0X3AxPC1nYXRoZXIoYXMuZGF0YS5mcmFtZShkYXRfcDEpLCAKICAgICAgICAgICAgICAga2V5ID0gc2V4LCAKICAgICAgICAgICAgICAgdmFsdWUgPSBwZXJjZW50LCAKICAgICAgICAgICAgICAgbWFsZXBlcmNlbnQ6ZmVtYWxlcGVyY2VudCwgCiAgICAgICAgICAgICAgIGZhY3Rvcl9rZXkgPSBUUlVFKQoKCmRhdF9wMSRzYW1wbGVzaXplPC13aXRoKGRhdF9wMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzZXggPT0gIm1hbGVwZXJjZW50IiwgbWFsZWJpYXMsIGZlbWFsZWJpYXMpICkKCiMgQWRkaW5nIEFsbApkYXRfcDEgJT4lICBncm91cF9ieShzZXgpICU+JSBzdW1tYXJpc2UobWFsZWJpYXMgPSBzdW0obWFsZWJpYXMpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlbWFsZWJpYXM9IHN1bShmZW1hbGViaWFzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsID0gc3VtKHRvdGFsKSwKKSAtPiBwYXJ0CgpwYXJ0ICU+JSBtdXRhdGUoQ2F0ZWdvcnkgPSAiQWxsIiwKICAgICAgICAgICAgICAgIHNleCA9IGMoIm1hbGVwZXJjZW50IiwgImZlbWFsZXBlcmNlbnQiKSwKICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBjKDEwMCoobWFsZWJpYXNbMV0vdG90YWxbMV0pLCAxMDAqKGZlbWFsZWJpYXNbMV0vdG90YWxbMV0pKSwKICAgICAgICAgICAgICAgIHNhbXBsZXNpemUgPSBjKG1hbGViaWFzWzFdICwgIGZlbWFsZWJpYXNbMV0pKS0+IHBhcnQKCgojc2VsZWN0KENhdGVnb3J5LCBtYWxlYmlhcywgZmVtYWxlYmlhcywgdG90YWwsIHNleCwgcGVyY2VudCwgc2FtcGxlc2l6ZSkKZGF0X3AxIDwtIGJpbmRfcm93cyhkYXRfcDEsIHBhcnQpCgoKCnAxIDwtIAogIGdncGxvdChkYXRfcDEpICsKICBhZXMoeCA9IENhdGVnb3J5LCB5ID0gcGVyY2VudCwgZmlsbCA9IHNleCkgKwogIGdlb21fY29sKCkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDUwLCBsaW5ldHlwZSA9ICJkYXNoZWQiLCBjb2xvciA9ICJncmF5NDAiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBzdWJzZXQoZGF0X3AxLCBzYW1wbGVzaXplICE9IDApLCBhZXMobGFiZWwgPSBzYW1wbGVzaXplKSwgCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAuNSksIAogICAgICAgICAgICBjb2xvciA9ICJ3aGl0ZSIsIHNpemUgPSAzLjUpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjb2xvdXJzKSArCiAgdGhlbWVfYncoYmFzZV9zaXplID0gMTgpICsKICB0aGVtZShzdHJpcC50ZXh0LnkgPSBlbGVtZW50X3RleHQoYW5nbGUgPSAyNzAsIHNpemUgPSAxMCwgbWFyZ2luID0gbWFyZ2luKHQ9MTUsIHI9MTUsIGI9MTUsIGw9MTUpKSwgCiAgICAgICAgc3RyaXAudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksCiAgICAgICAgc3RyaXAuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChjb2xvdXIgPSBOVUxMLGxpbmV0eXBlID0gImJsYW5rIiwgZmlsbCA9ICJncmF5OTAiKSwKICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemU9MTQpLAogICAgICAgIHBhbmVsLnNwYWNpbmcgPSB1bml0KDAuNSwgImxpbmVzIiksCiAgICAgICAgcGFuZWwuYm9yZGVyPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy5saW5lPWVsZW1lbnRfbGluZSgpLCAKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2xpbmUobGluZXR5cGUgPSAic29saWQiLCBjb2xvdXIgPSAiZ3JheTk1IiksCiAgICAgICAgcGFuZWwuZ3JpZC5tYWpvci55ID0gZWxlbWVudF9saW5lKGxpbmV0eXBlID0gInNvbGlkIiwgY29sb3VyID0gImdyYXk5NSIpLAogICAgICAgIHBhbmVsLmdyaWQubWlub3IueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplPTE0KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsKICBjb29yZF9mbGlwKCkgICsKICBsYWJzKHRpdGxlID0gIlNjZW5hcmlvIEEgLSBkaWZmZXJlbnQgc2xvcGVzLCBcbiAgICAgICAgICAgICAgICAgICAgc2FtZSBpbnRlcmNlcHRzIikKCgoKI3NleCBiaWFzIGluIGludGVyY2VwdCBwYXJhbWV0ZXIgLSBzY2VuYXJpbyBCCmRhdF9wMjwtZGF0X2ludCU+JQogIGdyb3VwX2J5X2F0KHZhcnMoQ2F0ZWdvcnkpKSAlPiUKICBzdW1tYXJpc2UobWFsZWJpYXMgPSBzdW0obV9pbnRlcmNlcHQgPiBmX2ludGVyY2VwdCksIAogICAgICAgICAgICBmZW1hbGViaWFzID0gc3VtKGZfaW50ZXJjZXB0ID4gbV9pbnRlcmNlcHQpLCAKICAgICAgICAgICAgdG90YWw9IG1hbGViaWFzICsgZmVtYWxlYmlhcywgCiAgICAgICAgICAgIG1hbGVwZXJjZW50ID0gbWFsZWJpYXMqMTAwL3RvdGFsLCAKICAgICAgICAgICAgZmVtYWxlcGVyY2VudCA9IGZlbWFsZWJpYXMqMTAwL3RvdGFsKSAgCgpkYXRfcDI8LWdhdGhlcihhcy5kYXRhLmZyYW1lKGRhdF9wMiksIAogICAgICAgICAgICAgICBrZXkgPSBzZXgsIAogICAgICAgICAgICAgICB2YWx1ZSA9IHBlcmNlbnQsIAogICAgICAgICAgICAgICBtYWxlcGVyY2VudDpmZW1hbGVwZXJjZW50LCAKICAgICAgICAgICAgICAgZmFjdG9yX2tleSA9IFRSVUUpCgpkYXRfcDIkc2FtcGxlc2l6ZTwtd2l0aChkYXRfcDIsIAogICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2Uoc2V4ID09ICJtYWxlcGVyY2VudCIsIG1hbGViaWFzLCBmZW1hbGViaWFzKSApCgojIGFkZGVpbmcgQWxsCmRhdF9wMiAlPiUgIGdyb3VwX2J5KHNleCkgJT4lIHN1bW1hcmlzZShtYWxlYmlhcyA9IHN1bShtYWxlYmlhcyksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVtYWxlYmlhcz0gc3VtKGZlbWFsZWJpYXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWwgPSBzdW0odG90YWwpLAopIC0+IHBhcnQyCgpwYXJ0MiAlPiUgbXV0YXRlKENhdGVnb3J5ID0gIkFsbCIsCiAgICAgICAgICAgICAgICAgc2V4ID0gYygibWFsZXBlcmNlbnQiLCAiZmVtYWxlcGVyY2VudCIpLAogICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBjKDEwMCoobWFsZWJpYXNbMV0vdG90YWxbMV0pLCAxMDAqKGZlbWFsZWJpYXNbMV0vdG90YWxbMV0pKSwKICAgICAgICAgICAgICAgICBzYW1wbGVzaXplID0gYyhtYWxlYmlhc1sxXSAsICBmZW1hbGViaWFzWzFdKSktPiBwYXJ0MgoKCiNzZWxlY3QoQ2F0ZWdvcnksIG1hbGViaWFzLCBmZW1hbGViaWFzLCB0b3RhbCwgc2V4LCBwZXJjZW50LCBzYW1wbGVzaXplKQpkYXRfcDIgPC0gYmluZF9yb3dzKGRhdF9wMiwgcGFydDIpCgoKcDIgPC0gCiAgZ2dwbG90KGRhdF9wMikgKwogIGFlcyh4ID0gQ2F0ZWdvcnksIHkgPSBwZXJjZW50LCBmaWxsID0gc2V4KSArCiAgZ2VvbV9jb2woKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gNTAsIGxpbmV0eXBlID0gImRhc2hlZCIsIGNvbG9yID0gImdyYXk0MCIpICsKICBnZW9tX3RleHQoZGF0YSA9IHN1YnNldChkYXRfcDIsIHNhbXBsZXNpemUgIT0gMCksIGFlcyhsYWJlbCA9IHNhbXBsZXNpemUpLCAKICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IC41KSwgCiAgICAgICAgICAgIGNvbG9yID0gIndoaXRlIiwgc2l6ZSA9IDMuNSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvbG91cnMpICsgCiAgdGhlbWVfYncoYmFzZV9zaXplID0gMTgpICsKICB0aGVtZShzdHJpcC50ZXh0LnkgPSBlbGVtZW50X3RleHQoYW5nbGUgPSAyNzAsIHNpemUgPSAxMCwgbWFyZ2luID0gbWFyZ2luKHQ9MTUsIHI9MTUsIGI9MTUsIGw9MTUpKSwgCiAgICAgICAgc3RyaXAudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksCiAgICAgICAgc3RyaXAuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChjb2xvdXIgPSBOVUxMLGxpbmV0eXBlID0gImJsYW5rIiwgZmlsbCA9ICJncmF5OTAiKSwKICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemU9MTQpLAogICAgICAgIHBhbmVsLnNwYWNpbmcgPSB1bml0KDAuNSwgImxpbmVzIiksCiAgICAgICAgcGFuZWwuYm9yZGVyPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy5saW5lPWVsZW1lbnRfbGluZSgpLCAKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2xpbmUobGluZXR5cGUgPSAic29saWQiLCBjb2xvdXIgPSAiZ3JheTk1IiksCiAgICAgICAgcGFuZWwuZ3JpZC5tYWpvci55ID0gZWxlbWVudF9saW5lKGxpbmV0eXBlID0gInNvbGlkIiwgY29sb3IgPSAiZ3JheTk1IiksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci55ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWlub3IueCA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemU9MTQpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKwogIGNvb3JkX2ZsaXAoKSArCiAgbGFicyh0aXRsZSA9ICJTY2VuYXJpbyBCIC0gc2FtZSBzbG9wZXMsIFxuICAgICAgICAgICAgZGlmZmVyZW50IGludGVyY2VwdHMiKQoKCiNzZXggYmlhcyBpbiBzaWcgaW50ZXJjZXB0IGFuZCBzbG9wZSBwYXJhbWV0ZXIgLSBzY2VuYXJpbyBDCmRhdF9wMzwtZGF0X2ludFNsb3BlcyU+JQogIGdyb3VwX2J5X2F0KHZhcnMoQ2F0ZWdvcnkpKSAlPiUKICBzdW1tYXJpc2UobWFsZWJpYXMgPSBzdW0obV9pbnRlcmNlcHQgPiBmX2ludGVyY2VwdCAmIG1fc2xvcGUgPiBmX3Nsb3BlKSwgCiAgICAgICAgICAgIG1peGVkID0gc3VtKG1faW50ZXJjZXB0ID4gZl9pbnRlcmNlcHQgJiBtX3Nsb3BlIDwgZl9zbG9wZSwgCiAgICAgICAgICAgICAgICAgICAgICAgIG1faW50ZXJjZXB0IDwgZl9pbnRlcmNlcHQgJiBtX3Nsb3BlID4gZl9zbG9wZSksCiAgICAgICAgICAgIGZlbWFsZWJpYXMgPSBzdW0oZl9pbnRlcmNlcHQgPiBtX2ludGVyY2VwdCAmIGZfc2xvcGUgPiBtX3Nsb3BlKSwgCiAgICAgICAgICAgIHRvdGFsPSBtYWxlYmlhcyArIG1peGVkICsgZmVtYWxlYmlhcywgCiAgICAgICAgICAgIG1hbGVwZXJjZW50ID0gbWFsZWJpYXMqMTAwL3RvdGFsLCAKICAgICAgICAgICAgbWl4ZWRwZXJjZW50ID0gbWl4ZWQqMTAwL3RvdGFsLAogICAgICAgICAgICBmZW1hbGVwZXJjZW50ID0gZmVtYWxlYmlhcyoxMDAvdG90YWwpICAKCmRhdF9wMzwtZ2F0aGVyKGFzLmRhdGEuZnJhbWUoZGF0X3AzKSwgCiAgICAgICAgICAgICAgIGtleSA9IHNleCwgCiAgICAgICAgICAgICAgIHZhbHVlID0gcGVyY2VudCwgCiAgICAgICAgICAgICAgIG1hbGVwZXJjZW50OmZlbWFsZXBlcmNlbnQsIAogICAgICAgICAgICAgICBmYWN0b3Jfa2V5ID0gVFJVRSkKZGF0X3AzJHNhbXBsZXNpemU8LXdpdGgoZGF0X3AzLCAKICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHNleCA9PSAibWFsZXBlcmNlbnQiLCBtYWxlYmlhcywgaWZlbHNlKHNleCA9PSAibWl4ZWRwZXJjZW50IiwgbWl4ZWQsIGZlbWFsZWJpYXMpKSApCgoKIyBhZGRpbmcgQWxsCmRhdF9wMyAlPiUgIGdyb3VwX2J5KHNleCkgJT4lIHN1bW1hcmlzZShtYWxlYmlhcyA9IHN1bShtYWxlYmlhcyksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWl4ZWQgPSBzdW0obWl4ZWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVtYWxlYmlhcz0gc3VtKGZlbWFsZWJpYXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWwgPSBzdW0odG90YWwpLAopIC0+IHBhcnQzCgpwYXJ0MyAlPiUgbXV0YXRlKENhdGVnb3J5ID0gIkFsbCIsCiAgICAgICAgICAgICAgICAgc2V4ID0gYygibWFsZXBlcmNlbnQiLCAibWl4ZWRwZXJjZW50IiwgImZlbWFsZXBlcmNlbnQiKSwKICAgICAgICAgICAgICAgICBwZXJjZW50ID0gYygxMDAqKG1hbGViaWFzWzFdL3RvdGFsWzFdKSwgMTAwKihtaXhlZFsxXS90b3RhbFsxXSksIDEwMCooZmVtYWxlYmlhc1sxXS90b3RhbFsxXSkpLAogICAgICAgICAgICAgICAgIHNhbXBsZXNpemUgPSBjKG1hbGViaWFzWzFdICwgbWl4ZWRbMV0sIGZlbWFsZWJpYXNbMV0pKS0+IHBhcnQzCgoKI3NlbGVjdChDYXRlZ29yeSwgbWFsZWJpYXMsIGZlbWFsZWJpYXMsIHRvdGFsLCBzZXgsIHBlcmNlbnQsIHNhbXBsZXNpemUpCmRhdF9wMyA8LSBiaW5kX3Jvd3MoZGF0X3AzLCBwYXJ0MykKCnAzIDwtIAogIGdncGxvdChkYXRfcDMpICsKICBhZXMoeCA9IENhdGVnb3J5LCB5ID0gcGVyY2VudCwgZmlsbCA9IHNleCkgKwogIGdlb21fY29sKCkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDUwLCBsaW5ldHlwZSA9ICJkYXNoZWQiLCBjb2xvciA9ICJncmF5NDAiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBzdWJzZXQoZGF0X3AzLCBzYW1wbGVzaXplICE9IDApLCBhZXMobGFiZWwgPSBzYW1wbGVzaXplKSwgCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAuNSksIAogICAgICAgICAgICBjb2xvciA9ICJ3aGl0ZSIsIHNpemUgPSAzLjUpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjb2xvdXJzMikgKyAKICB0aGVtZV9idyhiYXNlX3NpemUgPSAxOCkgKwogIHRoZW1lKHN0cmlwLnRleHQueSA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDI3MCwgc2l6ZSA9IDEwLCBtYXJnaW4gPSBtYXJnaW4odD0xNSwgcj0xNSwgYj0xNSwgbD0xNSkpLCAKICAgICAgICBzdHJpcC50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwKICAgICAgICBzdHJpcC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGNvbG91ciA9IE5VTEwsbGluZXR5cGUgPSAiYmxhbmsiLCBmaWxsID0gImdyYXk5MCIpLAogICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZT0xNCksCiAgICAgICAgcGFuZWwuc3BhY2luZyA9IHVuaXQoMC41LCAibGluZXMiKSwKICAgICAgICBwYW5lbC5ib3JkZXI9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBheGlzLmxpbmU9ZWxlbWVudF9saW5lKCksIAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueCA9IGVsZW1lbnRfbGluZShsaW5ldHlwZSA9ICJzb2xpZCIsIGNvbG91ciA9ICJncmF5OTUiKSwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnkgPSBlbGVtZW50X2xpbmUobGluZXR5cGUgPSAic29saWQiLCBjb2xvciA9ICJncmF5OTUiKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplPTE0KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpKwogIHlsYWIoIlBlcmNlbnRhZ2UgKCUpIikgKwogIGNvb3JkX2ZsaXAoKSArCiAgbGFicyh0aXRsZSA9ICJTY2VuYXJpbyBDIC0gZGlmZmVyZW50IHNsb3BlcywgXG4gICAgICAgICAgICAgICAgZGlmZmVyZW50IGludGVyY2VwdHMiKSAKCiNzZXggYmlhcyBpbiBzZCAKZGF0X3A0PC1kYXQlPiUgZmlsdGVyKHBfdmFsX3NkIDw9IDAuMDUpICU+JSAKICBncm91cF9ieV9hdCh2YXJzKENhdGVnb3J5KSkgJT4lCiAgc3VtbWFyaXNlKG1hbGViaWFzID0gc3VtKG1fc2QgPiBmX3NkKSwgCiAgICAgICAgICAgIGZlbWFsZWJpYXMgPSBzdW0oZl9zZCA+IG1fc2QpLCAKICAgICAgICAgICAgdG90YWw9IG1hbGViaWFzICsgZmVtYWxlYmlhcywgCiAgICAgICAgICAgIG1hbGVwZXJjZW50ID0gbWFsZWJpYXMqMTAwL3RvdGFsLCAKICAgICAgICAgICAgZmVtYWxlcGVyY2VudCA9IGZlbWFsZWJpYXMqMTAwL3RvdGFsKQoKCmRhdF9wNDwtZ2F0aGVyKGFzLmRhdGEuZnJhbWUoZGF0X3A0KSwgCiAgICAgICAgICAgICAgIGtleSA9IHNleCwgCiAgICAgICAgICAgICAgIHZhbHVlID0gcGVyY2VudCwgCiAgICAgICAgICAgICAgIG1hbGVwZXJjZW50OmZlbWFsZXBlcmNlbnQsIAogICAgICAgICAgICAgICBmYWN0b3Jfa2V5ID0gVFJVRSkKCmRhdF9wNCRzYW1wbGVzaXplPC13aXRoKGRhdF9wNCwgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzZXggPT0gIm1hbGVwZXJjZW50IiwgbWFsZWJpYXMsIGZlbWFsZWJpYXMpICkKCgojIGFkZGVpbmcgQWxsCmRhdF9wNCAlPiUgIGdyb3VwX2J5KHNleCkgJT4lIHN1bW1hcmlzZShtYWxlYmlhcyA9IHN1bShtYWxlYmlhcyksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVtYWxlYmlhcz0gc3VtKGZlbWFsZWJpYXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWwgPSBzdW0odG90YWwpLAopIC0+IHBhcnQ0CgpwYXJ0NCAlPiUgbXV0YXRlKENhdGVnb3J5ID0gIkFsbCIsCiAgICAgICAgICAgICAgICAgc2V4ID0gYygibWFsZXBlcmNlbnQiLCAiZmVtYWxlcGVyY2VudCIpLAogICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBjKDEwMCoobWFsZWJpYXNbMV0vdG90YWxbMV0pLCAxMDAqKGZlbWFsZWJpYXNbMV0vdG90YWxbMV0pKSwKICAgICAgICAgICAgICAgICBzYW1wbGVzaXplID0gYyhtYWxlYmlhc1sxXSAsICBmZW1hbGViaWFzWzFdKSktPiBwYXJ0NAoKCiNzZWxlY3QoQ2F0ZWdvcnksIG1hbGViaWFzLCBmZW1hbGViaWFzLCB0b3RhbCwgc2V4LCBwZXJjZW50LCBzYW1wbGVzaXplKQpkYXRfcDQgPC0gYmluZF9yb3dzKGRhdF9wNCwgcGFydDQpCgpwNCA8LSAKICBnZ3Bsb3QoZGF0X3A0KSArCiAgYWVzKHggPSBDYXRlZ29yeSwgeSA9IHBlcmNlbnQsIGZpbGwgPSBzZXgpICsKICBnZW9tX2NvbCgpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSA1MCwgbGluZXR5cGUgPSAiZGFzaGVkIiwgY29sb3IgPSAiZ3JheTQwIikgKwogIGdlb21fdGV4dChkYXRhID0gc3Vic2V0KGRhdF9wNCwgc2FtcGxlc2l6ZSAhPSAwKSwgYWVzKGxhYmVsID0gc2FtcGxlc2l6ZSksIAogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gLjUpLCAKICAgICAgICAgICAgY29sb3IgPSAid2hpdGUiLCBzaXplID0gMy41KSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29sb3VycykgKyAKICB0aGVtZV9idyhiYXNlX3NpemUgPSAxOCkgKwogIHRoZW1lKHN0cmlwLnRleHQueSA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDI3MCwgc2l6ZSA9IDEwLCBtYXJnaW4gPSBtYXJnaW4odD0xNSwgcj0xNSwgYj0xNSwgbD0xNSkpLCAKICAgICAgICBzdHJpcC50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwKICAgICAgICBzdHJpcC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGNvbG91ciA9IE5VTEwsbGluZXR5cGUgPSAiYmxhbmsiLCBmaWxsID0gImdyYXk5MCIpLAogICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZT0xNCksCiAgICAgICAgcGFuZWwuc3BhY2luZyA9IHVuaXQoMC41LCAibGluZXMiKSwKICAgICAgICBwYW5lbC5ib3JkZXI9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBheGlzLmxpbmU9ZWxlbWVudF9saW5lKCksIAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueCA9IGVsZW1lbnRfbGluZShsaW5ldHlwZSA9ICJzb2xpZCIsIGNvbG91ciA9ICJncmF5OTUiKSwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnkgPSBlbGVtZW50X2xpbmUobGluZXR5cGUgPSAic29saWQiLCBjb2xvciA9ICJncmF5OTUiKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplPTE0KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpKwogIHlsYWIoIlBlcmNlbnRhZ2UgKCUpIikgKwogIGNvb3JkX2ZsaXAoKSArCiAgbGFicyh0aXRsZSA9ICJTdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50XG5zZXggZGlmZmVyZW5jZSBpbiByZXNpZHVhbCBTRHMiKSAKCiMgcHV0dGluZyBhbGwgdG9nZXRoZXIKKHAxICsgcDIpIC8gKHAzICsgcDQpICsgICBwbG90X2Fubm90YXRpb24odGFnX2xldmVscyA9ICdBJykKCiMgbm90ZSB0aGF0IHRoZSBrZXkgd2FzIGluc2VydGVkIHVzaW5nIElsbHVzdHJhdG9yCgpgYGAKCiFbXSguLi9maWcvRmlnMi5wbmcpCgoqKkZpZy4gMioqIFNleCBiaWFzZXMgZm9yIG1pY2UgcGhlbm90eXBpYyB0cmFpdHMgYXJyYW5nZSBpbiBmdW5jdGlvbmFsIGdyb3VwcyAoc2VlIHRoZSBtYWluIHRleCkKCiMjIEZ1bmN0aW9uYWwgY2F0ZWdvcmllcyBpbiB0aGUgZGF0YXNldAoKYGBge3J9CnBhcihtYXIgPSBjKDYsIDYsIDYsIDYpKQp2ID0gYyggODUsIDM5LCAyMSwgMzEsIDI1LCAxMTEsIDgsIDIyLCAzMykKdCA9IGMoCiAnYmVoYXZpb3VyJywKICdleWUnLAogJ2hlYXJpbmcnLAogJ2hlYXJ0JywKICdoZW1hdG9sb2d5JywKICdpbW11bm9sb2d5JywKICdtZXRhYm9saXNtJywKICdtb3JwaG9sb2d5JywKICdwaHlzaW9sb2d5JwopCmQgPSBkYXRhLmZyYW1lKHRyYWl0ID0gdCwgbiA9IHYpCmQgPSBkW29yZGVyKGQkbiwgZGVjcmVhc2luZyA9IFRSVUUpLCBdCmJhcnBsb3QoCiBoZWlnaHQgPSBkJG4sCiBuYW1lcy5hcmcgPSBkJHRyYWl0LAogbGFzID0gMywKIGNvbCA9IHNlcV9hbG9uZyhkJHRyYWl0KSArIDEsCiB5bGltID0gYygwLCA4MCkKKQpgYGAKCioqRmlnLiBTMSoqIFRoZSBudW1iZXIgb2YgdHJhaXRzIGluIGVhY2ggb2YgOSBmdW5jdGlvbmFsIGNhdGVnb3JpZXMuCgoKIyMgRXh0cmE6IENvbXBhcmluZyBtb2RlbHMgd2l0aCBhbmQgd2lob3V0IHN1YnN0cmFpbnMKCgpgYGB7cn0KIyBsb2FkaW5nIGRhdGEKZGF0X3Nob3J0IDwtIHJlYWRfY3N2KGhlcmUoImRhdGEvZGF0YV9jb21wYXJpc2lvbi5jc3YiKSkKCgpkYXRfc2hvcnQgJT4lIGdyb3VwX2J5KHBhcmFtZXRlcl9ncm91cCkgJT4lIG11dGF0ZShjb3VudCA9IG4oKSkgLT4gZGF0X3Nob3J0CiMgCmRhdF9zaG9ydDEgPC0gZGF0X3Nob3J0W3doaWNoKGRhdF9zaG9ydCRjb3VudCA9PSAxKSwgXQojIAojZGltKGRhdDEpCgojICB0YWtpbmcgb3V0IGluZGVwZW5kZW50IHRyYWl0cwpkYXRfc2hvcnQyIDwtIGRhdF9zaG9ydFstd2hpY2goZGF0X3Nob3J0JGNvdW50ID09IDEpLCBdCgojIG5lc3RpbmcgZGF0YSBpbnRvIGEgbG90IG9mIGRhdGEgc2V0cyBhbmQgYXBwbHkgcF9tb2QgZnVuY3Rpb24Kbl9kYXRfc2hvcnQyIDwtIGRhdF9zaG9ydDIgJT4lIGdyb3VwX2J5KHBhcmFtZXRlcl9ncm91cCkgJT4lICBuZXN0KCkKCiMgZnVuY3Rpb24gdG8gZ2V0IG1lcmdlZCBwIHZhbHVlIGZvciBjb21wYXJpbmcgbW9kZWxzCnBfY29tcCA8LWZ1bmN0aW9uKGRhdGEpewogIAogIGxlbiA8LSBkaW0oZGF0YSlbMV0KICBSbWF0IDwtIG1hdHJpeCgwLjgsIG5yb3cgPSBsZW4sIG5jb2wgPSBsZW4pCiAgZGlhZyhSbWF0KSA8LSAxCiAgCiAgcF9tb2QgPC0gZmlzaGVyKGRhdGEkcF92YWx1ZSwgYWRqdXN0ID0gImxpamkiLCBSID0gUm1hdCkKICBwPC0gcF9tb2QkcAogIHJldHVybihwKQogIAp9CgojIG1lcmdlZCBkYXRhCm1fZGF0X3Nob3J0MiA8LSBuX2RhdF9zaG9ydDIgICU+JSBtdXRhdGUobWVyZ2VkX3BfY29tcCA9IG1hcF9kYmwoZGF0YSwgcF9jb21wKSkKCiMgc2hvcnQgZGF0YXNldApkYXRfc2lnIDwtZGF0X3Nob3J0ICU+JQogIGZpbHRlciAocF92YWx1ZSA8PSAwLjA1KQoKIzE1NSBvdXQgb2YgMjQ4IHRyYWl0cyBzaWcgY29tcGFyaXNvbnMKbnJvdyhkYXRfc2hvcnQpCm5yb3coZGF0X3NpZykKCiMgcmVkdWNlZCBkYXRhc2V0CmRhdF9zaWcxIDwtZGF0X3Nob3J0MSAlPiUKICBmaWx0ZXIgKHBfdmFsdWUgPD0gMC4wNSkKCmRhdF9zaWcyIDwtbV9kYXRfc2hvcnQyICU+JQogIGZpbHRlciAobWVyZ2VkX3BfY29tcCA8PSAwLjA1KQoKIzk4IG91dCBvZiAxNTQgdHJhaXRzIHNpZyBjb21wYXJpc29ucwpucm93KGRhdF9zaG9ydDEpICsgbnJvdyhtX2RhdF9zaG9ydDIpCm5yb3coZGF0X3NpZzEpICsgbnJvdyhkYXRfc2lnMikgCgoKYGBgCgojIE1ldGEtYW5hbHlzaXMgey50YWJzZXR9CgojIyBDYWxjdWxhdGluZyBhYnNvbHV0ZSBlZmZlY3Qgc2l6ZXMKCkhlcmUgd2UgY29udmVydCBvdXIgZWZmZWN0IHNpemVzIHRvIGFic29sdXRlIHZhbHVlcyBhc3N1bWluZyBmb2xkZWQgbm9ybWFsIGRpc3RyaWJ1dGlvbnMuCgpgYGB7cn0KIyMgZm9yIGZvbGRlZCBub3JtYWwgZGlzdHJpYnV0aW9uIHNlZTogCiMjIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZvbGRlZF9ub3JtYWxfZGlzdHJpYnV0aW9uCgojIGZvbGRlZCBtZWFuCmZvbGRlZF9tdSA8LWZ1bmN0aW9uKG1lYW4sIHZhcmlhbmNlKXsKICBtdSA8LSBtZWFuCiAgc2lnbWEgPC0gc3FydCh2YXJpYW5jZSkKICBmb2xkX211IDwtIHNpZ21hKnNxcnQoMi9waSkqZXhwKCgtbXVeMikvKDIqc2lnbWFeMikpICsgbXUqKDEgLSAyKnBub3JtKC1tdS9zaWdtYSkpCiAgZm9sZF9tdQp9IAoKIyBmb2xkZWQgdmFyaWFuY2UKZm9sZGVkX3YgPC1mdW5jdGlvbihtZWFuLCB2YXJpYW5jZSl7CiAgbXUgPC0gbWVhbgogIHNpZ21hIDwtIHNxcnQodmFyaWFuY2UpCiAgZm9sZF9tdSA8LSBzaWdtYSpzcXJ0KDIvcGkpKmV4cCgoLW11XjIpLygyKnNpZ21hXjIpKSArIG11KigxIC0gMipwbm9ybSgtbXUvc2lnbWEpKQogIGZvbGRfc2UgPC0gc3FydChtdV4yICsgc2lnbWFeMiAtIGZvbGRfbXVeMikKICAjIGFkZGluZyBzZSB0byBtYWtlIGJpZ2dlciBtZWFuCiAgZm9sZF92IDwtZm9sZF9zZV4yCiAgZm9sZF92Cn0gCgoKZGF0IDwtIGRhdCAlPiUgbXV0YXRlKGFic19pbnQgPSBmb2xkZWRfbXUoZm1fZGlmZl9pbnQsIGZtX2RpZmZfaW50X3NlXjIpLCAKICAgICAgICAgICAgICAgICAgICAgIGFic19zbG9wZSA9IGZvbGRlZF9tdShmbV9kaWZmX3Nsb3BlLCBmbV9kaWZmX3Nsb3BlX3NlXjIpLAogICAgICAgICAgICAgICAgICAgICAgYWJzX2xuVlIgPSBmb2xkZWRfbXUobG5WUiwgVmxuVlIpLAogICAgICAgICAgICAgICAgICAgICAgVl9hYnNfaW50ID0gZm9sZGVkX3YoZm1fZGlmZl9pbnQsIGZtX2RpZmZfaW50X3NlXjIpLCAKICAgICAgICAgICAgICAgICAgICAgIFZfYWJzX3Nsb3BlID0gZm9sZGVkX3YoZm1fZGlmZl9zbG9wZSwgZm1fZGlmZl9zbG9wZV9zZV4yKSwKICAgICAgICAgICAgICAgICAgICAgIFZfYWJzX2xuVlIgPSBmb2xkZWRfdihsblZSLCBWbG5WUiksCiAgICAgICAgICAgICAgICAgICAgICB0b3RhbF9uID0gZl9uICsgbV9uKQpgYGAKCiMjIENvbXBhcmluZyBzZXggZGlmZmVyZW5jZSBpbiBpbnRlcmNlcHRzCgpUaGlzIGlzIGEgbWV0YS1hbmFseXRpYyBtb2RlbCBvZiBzZXggZGlmZmVyZW5jZXMgaW4gaW50ZXJjZXB0cyAobWVhbiB0cmFpdHMpLiBXZSB1c2UgdGhlIGBydWJ1c3RgIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdG8gc2VlIHdoZXRoZXIgb3VyIHJlc3VsdHMgZm9ybSB0aGUgbW9kZWwgaXMgcm9idXN0IChjb25zaXN0ZW50KS4KCmBgYHtyfQptb2RlbGlhIDwtIHJtYS5tdih5aSA9IGFic19pbnQsIAogICAgICAgICAgICAgICAgICBWPSBWX2Fic19pbnQsIAogICAgICAgICAgICAgICAgICByYW5kb20gPSBsaXN0KH4xfCBDYXRlZ29yeSwgfjF8IHBhcmFtZXRlcl9ncm91cCwgfjF8b2JzKSwgCiAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXQpCnN1bW1hcnkobW9kZWxpYSkKCiMgcm9idXN0IHZhcmlhbmNlIGVzdGltYXRvcgpyb2J1c3QobW9kZWxpYSwgY2x1c3RlciAgPSAgZGF0JHBhcmFtZXRlcl9ncm91cCkKCiMgSTIgKGhldGVyb2dlbmVpdHkpCmkyX21sKG1vZGVsaWEpCmBgYAoKVGhpcyBpcyBhIG1ldGEtcmVncmVzc2lvbiBtb2RlbCBvZiBzZXggZGlmZmVyZW5jZXMgaW4gaW50ZXJjZXB0cyAobWVhbiB0cmFpdHMpIHdpdGggYSBmdW5jdGlvbmFsIGNhdGVnb3J5IGFzIGEgbW9kZXJhdG9yLiBXZSB1c2VkIHRoZSBgcnVidXN0YCBmdW5jdGlvbiBjYWxjdWxhdGVzIHRvIHNlZSB3aGV0aGVyIG91ciByZXN1bHRzIGZvcm0gdGhlIG1vZGVsIGlzIHJvYnVzdCAoY29uc2lzdGVudCkuCgpgYGB7cn0KbW9kZWwxYSA8LSBybWEubXYoeWkgPSBhYnNfaW50LCBWPSBWX2Fic19pbnQsIG1vZCA9IH4gQ2F0ZWdvcnkgLSAxLAogICAgICAgICAgICAgICAgICByYW5kb20gPSBsaXN0KH4xfCBwYXJhbWV0ZXJfZ3JvdXAsIH4xfG9icyksIAogICAgICAgICAgICAgICAgICBkYXRhID0gZGF0KQpzdW1tYXJ5KG1vZGVsMWEpCnJvYnVzdChtb2RlbDFhLCBjbHVzdGVyICA9ICBkYXQkcGFyYW1ldGVyX2dyb3VwKQojIFIyICh2YXJpYW5jZSBleHBsYWluZWQpCnIyX21sKG1vZGVsMWEpCmBgYAoKIyMgQ29tcGFyaW5nIHNleCBkaWZmZXJlbmNlIGluIHNsb3BlcwoKVGhpcyBpcyBhIG1ldGEtYW5hbHl0aWMgbW9kZWwgb2Ygc2V4IGRpZmZlcmVuY2VzIGluIHNsb3Blcy4gV2UgdXNlZCB0aGUgYHJ1YnVzdGAgZnVuY3Rpb24gY2FsY3VsYXRlcyB0byBzZWUgd2hldGhlciBvdXIgcmVzdWx0cyBmb3JtIHRoZSBtb2RlbCBpcyByb2J1c3QgKGNvbnNpc3RlbnQpLgoKYGBge3J9Cm1vZGVsc2EgPC0gcm1hLm12KHlpID0gYWJzX3Nsb3BlLCBWPSBWX2Fic19zbG9wZSwgCiAgICAgICAgICAgICAgICAgIHJhbmRvbSA9IGxpc3QofjF8IENhdGVnb3J5LCB+MXwgcGFyYW1ldGVyX2dyb3VwLCB+MXxvYnMpLCAKICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdCkKc3VtbWFyeShtb2RlbHNhKSAjIG5vdCBzaWcgdGhpcyBtZWFucyBzb21ldGltZXMgbWFsZSBpcyBoaWdoIG90aGVyIHRpbWVzIGZlbWFsZSBoYXMgc3RlYXBlciBzbG9wcwpyb2J1c3QobW9kZWxzYSwgY2x1c3RlciAgPSAgZGF0JHBhcmFtZXRlcl9ncm91cCkKCiMgSTIgKGhldGVyb2dlbmVpdHkpCmkyX21sKG1vZGVsaWEpCmBgYAoKVGhpcyBpcyBhIG1ldGEtcmVncmVzc2lvbiBtb2RlbCBvZiBzZXggZGlmZmVyZW5jZXMgaW4gc2xvcGVzIHdpdGggYSBmdW5jdGlvbmFsIGNhdGVnb3J5IGFzIGEgbW9kZXJhdG9yLiBXZSB1c2UgdGhlIGBydWJ1c3RgIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdG8gc2VlIHdoZXRoZXIgb3VyIHJlc3VsdHMgZm9ybSB0aGUgbW9kZWwgaXMgcm9idXN0IChjb25zaXN0ZW50KS4KCmBgYHtyfQptb2RlbDJhIDwtIHJtYS5tdih5aSA9IGFic19zbG9wZSwgVj0gVl9hYnNfc2xvcGUsCiAgICAgICAgICAgICAgICAgIG1vZCA9IH4gQ2F0ZWdvcnkgLSAxLAogICAgICAgICAgICAgICAgICByYW5kb20gPSBsaXN0KH4xfCBwYXJhbWV0ZXJfZ3JvdXAsIH4xfG9icyksIAogICAgICAgICAgICAgICAgICBkYXRhID0gZGF0KQpzdW1tYXJ5KG1vZGVsMmEpCnJvYnVzdChtb2RlbDJhLCBjbHVzdGVyICA9ICBkYXQkcGFyYW1ldGVyX2dyb3VwKQojIFIyICh2YXJpYW5jZSBleHBsYWluZWQpCnIyX21sKG1vZGVsMmEpCmBgYAoKIyMgQ29tcGFyaW5nIHNleCBkaWZmZXJlbmNlIGluIHJlc2RpYXVsIFNEcwoKVGhpcyBpcyBhIG1ldGEtYW5hbHl0aWMgbW9kZWwgb2Ygc2V4IGRpZmZlcmVuY2VzIGluIHJlc2lkdWFsIFNEcy4gV2UgdXNlIHRoZSBgcnVidXN0YCBmdW5jdGlvbiBjYWxjdWxhdGVzIHRvIHNlZSB3aGV0aGVyIG91ciByZXN1bHRzIGZvcm0gdGhlIG1vZGVsIGlzIHJvYnVzdCAoY29uc2lzdGVudCkuCgpgYGB7cn0KbW9kZWxzZGEgPC0gcm1hLm12KHlpID0gYWJzX2xuVlIsIFY9IFZfYWJzX2xuVlIsIAogICAgICAgICAgICAgICAgICAgcmFuZG9tID0gbGlzdCh+MXwgQ2F0ZWdvcnksIH4xfCBwYXJhbWV0ZXJfZ3JvdXAsIH4xfG9icyksIAogICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdCkKc3VtbWFyeShtb2RlbHNkYSkKcm9idXN0KG1vZGVsc2RhLCBjbHVzdGVyICA9ICBkYXQkcGFyYW1ldGVyX2dyb3VwKQoKIyBJMiAoaGV0ZXJvZ2VuZWl0eSkKaTJfbWwobW9kZWxzZGEpCmBgYAoKVGhpcyBpcyBhIG1ldGEtcmVncmVzc2lvbiBtb2RlbCBvZiBzZXggZGlmZmVyZW5jZXMgaW4gcmVzaWR1YWwgU0RzIHdpdGggYSBmdW5jdGlvbmFsIGNhdGVnb3J5IGFzIGEgbW9kZXJhdG9yLiBXZSB1c2UgdGhlIGBydWJ1c3RgIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdG8gc2VlIHdoZXRoZXIgb3VyIHJlc3VsdHMgZm9ybSB0aGUgbW9kZWwgaXMgcm9idXN0IChjb25zaXN0ZW50KS4KCmBgYHtyfQojIG1ldGEtcmVncmVzc2lvbgptb2RlbDNhIDwtIHJtYS5tdih5aSA9IGFic19sblZSLCBWPSBWX2Fic19sblZSLCBtb2QgPSB+IENhdGVnb3J5IC0gMSwKICAgICAgICAgICAgICAgICAgcmFuZG9tID0gbGlzdCh+MXwgcGFyYW1ldGVyX2dyb3VwLCB+MXxvYnMpLCAKICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdCkKc3VtbWFyeShtb2RlbDNhKQojIFIyICh2YXJpYW5jZSBleHBsYWluZWQpCnIyX21sKG1vZGVsM2EpCmBgYAoKIyMgQ29tcGFyaW5nIG1vZGVsIGZpdHMKClRoaXMgaXMgYSBtZXRhLWFuYWx5dGljIG1vZGVsIG9mIFpyICh0cmFuc2Zvcm1lZCBtb2RlbCBmaXRzKS4gV2UgdXNlIHRoZSBgcnVidXN0YCBmdW5jdGlvbiBjYWxjdWxhdGVzIHRvIHNlZSB3aGV0aGVyIG91ciByZXN1bHRzIGZvcm0gdGhlIG1vZGVsIGlzIHJvYnVzdCAoY29uc2lzdGVudCkuCgpgYGB7cn0KbW9kZWxyMCA8LSBybWEubXYoeWkgPSBaciwgCiAgICAgICAgICAgICAgICAgIFY9IFZaciwgCiAgICAgICAgICAgICAgICAgIHJhbmRvbSA9IGxpc3QofjF8IENhdGVnb3J5LCB+MXwgcGFyYW1ldGVyX2dyb3VwLCB+MXxvYnMpLCAKICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdCkKc3VtbWFyeShtb2RlbHIwKQpyb2J1c3QobW9kZWxyMCwgY2x1c3RlciAgPSAgZGF0JHBhcmFtZXRlcl9ncm91cCkKCiNmdW5uZWwobW9kZWxyMCkKaTJfbWwobW9kZWxyMCkKYGBgCgpUaGlzIGlzIGEgbWV0YS1yZWdyZXNzaW9uIG1vZGVsIG9mIFpyICh0cmFuc2Zvcm1lZCBtb2RlbCBmaXRzKS4gd2l0aCBhIGZ1bmN0aW9uYWwgY2F0ZWdvcnkgYXMgYSBtb2RlcmF0b3IuIFdlIHVzZSB0aGUgYHJ1YnVzdGAgZnVuY3Rpb24gY2FsY3VsYXRlcyB0byBzZWUgd2hldGhlciBvdXIgcmVzdWx0cyBmb3JtIHRoZSBtb2RlbCBpcyByb2J1c3QgKGNvbnNpc3RlbnQpLgoKYGBge3J9CiMgbWV0YS1yZWdyZXNzaW9uCm1vZGVscjEgPC0gcm1hLm12KHlpID0gWnIsIG1vZCA9IH4gQ2F0ZWdvcnkgLSAxLAogICAgICAgICAgICAgICBWPSBWWnIsIAogICAgICAgICAgICAgICByYW5kb20gPSBsaXN0KH4xfCBwYXJhbWV0ZXJfZ3JvdXAsIH4xfG9icyksIAogICAgICAgICAgICAgICBkYXRhID0gZGF0KQoKc3VtbWFyeShtb2RlbHIxKQojIFIyICh2YXJpYW5jZSBleHBsYWluZWQpCnIyX21sKG1vZGVscjEpCmBgYAoKIyMgT2J0YWluaW5nIGNvcnJlbGF0aW9ucyBhbW9uZyBpbnRlcmNlcHRzLCBzbG9wZXMsIFNEcyBhbmQgbW9kZWwgZml0cwoKYGBge3IsIGV2YWwgPSBGQUxTRX0KCiMgcXVhZC12YXJpYXRlIG1vZGVsCgptb2RfbG5zZCA8LSBiZihsb2coYWJzX2xuVlIpIHwgc2Uoc3FydChWX2Fic19sblZSKS9hYnNfbG5WUikgIH4gLSAxICsgIENhdGVnb3J5KyAoMXxxfHBhcmFtZXRlcl9ncm91cCkpCm1vZF9sbnNscCA8LSBiZihsb2coYWJzX3Nsb3BlKSB8IHNlKHNxcnQoVl9hYnNfc2xvcGUpL2Fic19zbG9wZSkgIH4gIC0gMSArICBDYXRlZ29yeSArICgxfHF8cGFyYW1ldGVyX2dyb3VwKSkKbW9kX2xuaW50IDwtIGJmKGxvZyhhYnNfaW50KSB8IHNlKHNxcnQoVl9hYnNfaW50KS9hYnNfaW50KSAgfiAgLSAxICsgIENhdGVnb3J5ICsgKDF8cXxwYXJhbWV0ZXJfZ3JvdXApKQptb2RfbG56ciA8LSBiZihsb2coWnIpIHwgc2Uoc3FydChWWnIpL1pyKSAgfiAgLSAxICsgIENhdGVnb3J5ICsgKDF8cXxwYXJhbWV0ZXJfZ3JvdXApKQoKZml0XzRiIDwtIGJybShtb2RfbG5zZCArIG1vZF9sbnNscCArIG1vZF9sbmludCArIG1vZF9sbnpyLAogICAgICAgICAgICAgIGRhdGEgPSBkYXQsCiAgICAgICAgICAgICAgY2hhaW5zID0gMiwgY29yZXMgPSAyLCBpdGVyID0gNDAwMCwgd2FybXVwID0gMTAwMCwKICAgICAgICAgICAgICBiYWNrZW5kID0gImNtZHN0YW5yIgogICAgICAgICAgICAgICkKCnN1bW1hcnkoZml0XzRiKQoKIyBzYXZpbmcgdGhlIG1vZGVsCnNhdmVSRFMoZml0XzRiLCBmaWxlID0gaGVyZSgiZGF0YSIsICJmaXRfNGIucmRzIikpCmBgYAoKYGBge3IsIGVjaG8gPSBGQUxTRX0KZml0XzRiIDwtIHJlYWRSRFMoaGVyZSgiZGF0YSIsICJmaXRfNGIucmRzIikpCgpzdW1tYXJ5KGZpdF80YikKYGBgCgojIyBDcmVhdGluZyBGaWd1cmUgMwoKYGBge3IsIGV2YWwgPSBGfQojICBjb2xvdXItYmxpbmQgZnJlaW5kbHkgY29sb3VyCmNicGwgPC0gYygiI0U2OUYwMCIsICIjMDA5RTczIiwgIiNGMEU0NDIiLCAiIzAwNzJCMiIsICIjRDU1RTAwIiwgCiAgICAgICAgICAiI0NDNzlBNyIsICIjNTZCNEU5IiwgIiNBQTQ0OTkiLCAiI0REQ0M3NyIpCgpwb2ludC5zaXplID0gMgpicmFuY2guc2l6ZSA9IDMuNQoKIyBpbnRlcmNlcHQgbWV0YS1hbmFseXNpcwpwMSA8LSBvcmNoYXJkX3Bsb3QyKG1vZGVsaWEsIG1vZCA9ICJJbnQiLCB4bGFiID0gIkFic29sdXRlIGRpZmZlcmVuY2UgaW4gc3RhbmRhcmRpemVkIGludGVyY2VwdHMgIChGLU0pIiwgYW5nbGUgPSA0NSwgcG9pbnQuc2l6ZSA9IHBvaW50LnNpemUsIE4gPSBkYXQkdG90YWxfbiwgbGVnZW5kLm9uID0gVFJVRSwgYnJhbmNoLnNpemUgPSBicmFuY2guc2l6ZSwpICsKICBzY2FsZV95X2Rpc2NyZXRlKGxhYmVscyA9ICJPdmVyYWxsIikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9ICIjOTk5OTk5IikgKwogIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gIiM5OTk5OTkiKSAjKwogICN4bGltKGMoLTAuNSwgMS41KSkKCiMgaW50ZXJjZXB0IG1ldGEtcmVncmVzc2lvbgpwMiA8LSBvcmNoYXJkX3Bsb3QyKG1vZGVsMWEsIG1vZCA9ICJDYXRlZ29yeSIsIHhsYWIgPSAiQWJzb2x1dGUgZGlmZmVyZW5jZSBpbiBzdGFuZGFyZGl6ZWQgaW50ZXJjZXB0cyAgKEYtTSkiLCBhbmdsZSA9IDQ1LCAgcG9pbnQuc2l6ZSA9IHBvaW50LnNpemUsIE4gPSBkYXQkdG90YWxfbiwgbGVnZW5kLm9uID0gVFJVRSwgYnJhbmNoLnNpemUgPSBicmFuY2guc2l6ZSwpICsgCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY2JwbCkgKwogIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gY2JwbCkgIysKICAjeGxpbShjKC0wLjUsIDEuNSkpCgojIHNsb3BlIG1ldGEtYW5hbHlzaXMKcDMgPC0gb3JjaGFyZF9wbG90Mihtb2RlbHNhLCBtb2QgPSAiSW50IiwgeGxhYiA9ICJBYnNvbHV0ZSBkaWZmZXJlbmNlIGluIHN0YW5kYXJkaXplZCBzbG9wZXMgKEYtTSkiLCBhbmdsZSA9IDQ1LCAgcG9pbnQuc2l6ZSA9IHBvaW50LnNpemUsIGsgPSBGLCBOID0gZGF0JHRvdGFsX24sIGxlZ2VuZC5vbiA9IEZBTFNFLCBicmFuY2guc2l6ZSA9IGJyYW5jaC5zaXplLCkgKwogIHNjYWxlX3lfZGlzY3JldGUobGFiZWxzID0gIiIpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSAiIzk5OTk5OSIpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9ICIjOTk5OTk5IikgIysKICAjeGxpbShjKC0xLjUsIDEwKSkKCiMgc2xvcGUgbWV0YS1yZWdyZXNzaW9uCnA0IDwtIG9yY2hhcmRfcGxvdDIobW9kZWwyYSwgbW9kID0gIkNhdGVnb3J5IiwgeGxhYiA9ICJBYnNvbHV0ZSBkaWZmZXJlbmNlIGluIHN0YW5kYXJkaXplZCBzbG9wZXMgKEYtTSkiLCBhbmdsZSA9IDQ1LCBjYiA9IEYsICBwb2ludC5zaXplID0gcG9pbnQuc2l6ZSwgayA9IEYsIE4gPSBkYXQkdG90YWxfbiwgbGVnZW5kLm9uID0gRkFMU0UsIGJyYW5jaC5zaXplID0gYnJhbmNoLnNpemUsKSArIAogIHNjYWxlX3lfZGlzY3JldGUobGFiZWxzID0gcmVwKCIiLCA5KSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNicGwpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGNicGwpICMrCiAgI3hsaW0oYygtMS41LCAxMCkpCgojIFNEIG1ldGEtYW5hbHlzaXMKcDUgPC0gb3JjaGFyZF9wbG90Mihtb2RlbHNkYSwgbW9kID0gIkNhdGVnb3J5IiwgeGxhYiA9ICJBYnNvbHV0ZSByZWxhdGl2ZSBkaWZmZXJlbmNlIGluIFNEIChsblZSOiBGL00pIiwgYW5nbGUgPSA0NSwgIHBvaW50LnNpemUgPSBwb2ludC5zaXplLCBrID0gRiwgTiA9IGRhdCR0b3RhbF9uLCBsZWdlbmQub24gPSBGQUxTRSwgYnJhbmNoLnNpemUgPSBicmFuY2guc2l6ZSwpICsKICBzY2FsZV95X2Rpc2NyZXRlKGxhYmVscyA9ICIiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gIiM5OTk5OTkiKSArCiAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSAiIzk5OTk5OSIpICMrCiAgI3hsaW0oYygtMC4yLCAxLjkpKQoKIyBTRCBtZXRhLXJlZ3Jlc3Npb24KcDYgPC0gb3JjaGFyZF9wbG90Mihtb2RlbDNhLCBtb2QgPSAiQ2F0ZWdvcnkiLCB4bGFiID0gIkFic29sdXRlIHJlbGF0aXZlIGRpZmZlcmVuY2UgaW4gU0QgKGxuVlI6IEYvTSkiLCBhbmdsZSA9IDQ1LCBjYiA9IEYsICBwb2ludC5zaXplID0gcG9pbnQuc2l6ZSwgayA9IEYsIE4gPSBkYXQkdG90YWxfbiwgbGVnZW5kLm9uID0gRkFMU0UsIGJyYW5jaC5zaXplID0gYnJhbmNoLnNpemUsKSArIAogIHNjYWxlX3lfZGlzY3JldGUobGFiZWxzID0gcmVwKCIiLCA5KSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNicGwpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGNicGwpICMrCiAgI3hsaW0oYygtMC4yLCAxLjkpKQoKCiMgcHV0dGluZyBpdCB0b2dldGhlcgoocDEgfCBwMyB8IHA1KSAvIChwMiB8IHA0IHwgcDYpICArIHBsb3RfbGF5b3V0KGhlaWdodHMgPSBjKDEsIDMpKSArIHBsb3RfYW5ub3RhdGlvbih0YWdfbGV2ZWxzID0gJ0EnKQoKYGBgCgohW10oLi4vZmlnL0ZpZzMucG5nKQoKKipGaWcuIDMqKiBPcmNoYXJkIHBsb3RzIGlsbHVzdHJhdGluZyByZXN1bHRzIG9mIG11bHRpbGV2ZWwgbWV0YS1hbmFseXNlcyAoc2VlIHRoZSBtYWluIHRleHQpCgoKIyMgQ3JlYXRpbmcgRmlndXJlIFMxCgpgYGB7ciwgZXZhbCA9IEZ9CiMgbWV0YS1hbmFseXNpcyB3aXRoIG1vZGVsIGZpdAp0MSA8LSBvcmNoYXJkX3Bsb3QyKG1vZGVscjAsIG1vZCA9ICJJbnQiLCB4bGFiID0gIlpyICh0cmFuc2Zvcm1lZCB2YXJpYW5jZSBhY2NvdW50ZWQgZm9yKSIsIGFuZ2xlID0gNDUsIAogICAgICAgICAgICAgICAgICAgIHBvaW50LnNpemUgPSBwb2ludC5zaXplLCBicmFuY2guc2l6ZSA9IGJyYW5jaC5zaXplLCBrID0gRiwgTiA9IGRhdCR0b3RhbF9uKSArCiAgc2NhbGVfeV9kaXNjcmV0ZShsYWJlbHMgPSAiT3ZlcmFsbCIpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSAiIzk5OTk5OSIpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9ICIjOTk5OTk5IikgIysKICAjeGxpbShjKC0wLjUsIDEuNSkpCgojIG1ldGEtcmVncmVzc2lvbiB3aXRoIG1vZGVsIGZpdAp0MiA8LSBvcmNoYXJkX3Bsb3QyKG1vZGVscjEsIG1vZCA9ICJDYXRlZ29yeSIsIHhsYWIgPSAiWnIgKHRyYW5zZm9ybWVkIHZhcmlhbmNlIGFjY291bnRlZCBmb3IpIiwgYW5nbGUgPSA0NSwgIHBvaW50LnNpemUgPSBwb2ludC5zaXplLCBrID0gRiwgTiA9IGRhdCR0b3RhbF9uLCBicmFuY2guc2l6ZSA9IGJyYW5jaC5zaXplLCkgKyAKICAjc2NhbGVfeV9kaXNjcmV0ZShsYWJlbHMgPSAiT3ZlcmFsbCIpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjYnBsKSArCiAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjYnBsKSAjKwogICN4bGltKGMoLTAuNSwgMS41KSkKCih0MSkgLyAodDIpICArIHBsb3RfbGF5b3V0KGhlaWdodHMgPSBjKDEsIDMpKSArIHBsb3RfYW5ub3RhdGlvbih0YWdfbGV2ZWxzID0gJ0EnKQpgYGAKCgohW10oLi4vZmlnL0ZpZ1MxLnBuZykKCioqRmlnLiBTMSoqIE9yY2hhcmQgcGxvdHMgaWxsdXN0cmF0aW5nIHJlc3VsdHMgb2YgbXVsdGlsZXZlbCBtZXRhLWFuYWx5c2VzIGZvciBaciAobW9kZWwgZml0KQoKIyMgQ3JlYXRpbmcgRmlndXJlIDQKCmBgYHtyLCBmaWcuaGVpZ2h0PSAxMn0KIyBjcmVhdGluZyBhZGRlZCBwcmVjaXNpb24KCiMgZGF0ICU+JSAgbXV0YXRlKHByZV9zbHBfaW50ID0gMS9zcXJ0KFZfYWJzX2ludC9hYnNfaW50XjIgKyBWX2Fic19zbG9wZS9hYnNfc2xvcGVeMiksCiMgICAgICAgICAgICAgICAgIHByZV9zbHBfc2QgPSAgMS9zcXJ0KFZfYWJzX3Nsb3BlL2Fic19zbG9wZV4yICsgVl9hYnNfbG5WUi9hYnNfbG5WUl4yKSwKIyAgICAgICAgICAgICAgICAgcHJlX2ludF9zZCA9IDEvc3FydChWX2Fic19pbnQvYWJzX2ludF4yICsgVl9hYnNfbG5WUi9hYnNfbG5WUl4yKQojICkgLT4gZGF0IAoKIyAgY29sb3VyLWJsaW5kIGZyZWluZGx5IGNvbG91cgpjYnBsIDwtIGMoIiNFNjlGMDAiLCAiIzAwOUU3MyIsICIjRjBFNDQyIiwgIiMwMDcyQjIiLCAiI0Q1NUUwMCIsIAogICAgICAgICAgIiNDQzc5QTciLCAiIzU2QjRFOSIsICIjQUE0NDk5IiwgIiNERENDNzciKQoKZjEgPC0gZ2dwbG90KGRhdGEgPSBkYXQpICsKICBnZW9tX3BvaW50KGFlcyh4ID0gbG9nKGFic19zbG9wZSksIHkgPSBsb2coYWJzX2ludCksIGNvbCA9IENhdGVnb3J5LCBzaXplID0gdG90YWxfbikpICsgCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY2JwbCkgKwogIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gY2JwbCkgKwogIGxhYnMoeCA9ICJsbihBYnNvbHV0ZSBkaWZmZXJlbmNlIGluIHN0YW5kYXJkaXplZCBzbG9wZXMpIiAsIHkgPSAibG4oQWJzb2x1dGUgZGlmZmVyZW5jZSBpbiBzdGFuZGFyZGl6ZWQgaW50ZXJjZXB0cykiKSsKICBsYWJzKGNvbG9yPSdUcmFpdCB0eXBlcycsIHNpemUgPSAiU2FtcGxlIHNpemUgKE4pIikgKwogIGFubm90YXRlKGdlb209InRleHQiLCB4ID0gLSAxMCwgeSA9IC0wLjUsIGxhYmVsPSJyID0gMC44MiBbMC43NiwgMC44OF0iLCBzaXplID0gMykrCiAgdGhlbWVfYncoKSAgKwogIHRoZW1lKGxlZ2VuZC5rZXkuc2l6ZSA9IHVuaXQoMC41LCAnY20nKSwgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemU9MTApKSArCiAgZ3VpZGVzKGNvbCA9ICJub25lIikgCgpmMiA8LSBnZ3Bsb3QoZGF0YSA9IGRhdCkgKwogIGdlb21fcG9pbnQoYWVzKHggPSBsb2coYWJzX3Nsb3BlKSwgeSA9IGxvZyhhYnNfbG5WUiksIGNvbCA9IENhdGVnb3J5LCBzaXplID0gdG90YWxfbikpICsgCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY2JwbCkgKwogIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gY2JwbCkgKwogIGxhYnMoeCA9ICJsbihBYnNvbHV0ZSBkaWZmZXJlbmNlIGluIHN0YW5kYXJkaXplZCBzbG9wZXMpIiAsIHkgPSAibG4oQWJzb2x1dGUgcmVsYXRpdmUgZGlmZmVyZW5jZSBpbiBTRCkiKSArCiAgbGFicyhjb2xvcj0nVHJhaXQgdHlwZXMnLCBzaXplID0gIlNhbXBsZSBzaXplIChOKSIpICsKICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeD0gLTkuOCwgeSA9IDAuNSwgbGFiZWw9InIgPSAwLjE0IFstMC4wMS4sIDAuMzBdIiwgc2l6ZSA9IDMpKwogIHRoZW1lX2J3KCkgICArCiAgdGhlbWUobGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjUsICdjbScpLCBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZT0xMCkpICsgCiAgZ3VpZGVzKGNvbCA9ICJub25lIiwgc2l6ZSA9ICJub25lIikgCiAgI3NjYWxlX3NpemVfY29udGludW91cyhicmVha3MgPSBjKDIwMCwgMjAwMCwgMjAwMDApLCBndWlkZSA9IGd1aWRlX2xlZ2VuZCgpKSArCgpmMyA8LSBnZ3Bsb3QoZGF0YSA9IGRhdCkgKwogIGdlb21fcG9pbnQoYWVzKHggPSBsb2coYWJzX2ludCksIHkgPSBsb2coYWJzX2xuVlIpLCBjb2wgPSBDYXRlZ29yeSwgc2l6ZSA9IHRvdGFsX24pKSArIAogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNicGwpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGNicGwpICsKICBsYWJzKHggPSAibG4oQWJzb2x1dGUgZGlmZmVyZW5jZSBpbiBzdGFuZGFyZGl6ZWQgaW50ZXJjZXB0cykiICwgeSA9ICJsbihBYnNvbHV0ZSByZWxhdGl2ZSBkaWZmZXJlbmNlIGluIFNEKSIpICsKICBsYWJzKGNvbG9yPSdUcmFpdCB0eXBlcycsIHNpemUgPSAiU2FtcGxlIHNpemUgKE4pIikgKwogIGFubm90YXRlKGdlb209InRleHQiLCB4PSAtIDkuNSwgeSA9IDAuNSwgbGFiZWw9InIgPSAwLjA3IFstMC4wOCwgMC4yMl0iLCBzaXplID0gMykrCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjUsICdjbScpLCBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZT0xMCkpICsKICBndWlkZXMoc2l6ZSA9ICJub25lIikgCgoKIChmMy9mMi9mMSkgICsgcGxvdF9hbm5vdGF0aW9uKHRhZ19sZXZlbHMgPSAnQScpCgpgYGAKCioqRmlnLiA0KiogQml2YXJpYXRlIG9yZGluYXRpb25zIG9mIGxvZyBhYnNvbHV0ZSBkaWZmZXJlbmNlIGJldHdlZW4gbWFsZXMgYW5kIGZlbWFsZXMgKHNlZSB0aGUgbWFpbiB0ZXh0KQoKIyMgQ3JlYXRpbmcgRmlndXJlIFMyCgpgYGB7ciwgZmlnLmhlaWdodD0gMTJ9CgpmNCA8LSBnZ3Bsb3QoZGF0YSA9IGRhdCkgKwogIGdlb21fcG9pbnQoYWVzKHkgPSBsb2coWnIpLCB4ID0gbG9nKGFic19pbnQpLCBjb2wgPSBDYXRlZ29yeSwgc2l6ZSA9IHRvdGFsX24pKSArIAogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNicGwpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGNicGwpICsKICBsYWJzKHkgPSAiWnIgKHRyYW5zZm9ybWVkIHZhcmlhbmNlIGFjY291bnRlZCBmb3IpIiwgeCA9ICAgImxuKEFic29sdXRlIGRpZmZlcmVuY2UgaW4gc3RhbmRhcmRpemVkIGludGVyY2VwdHMpIikgKwogIGxhYnMoY29sb3I9J1RyYWl0IHR5cGVzJyxzaXplID0gIlNhbXBsZSBzaXplIChOKSIpICsKICBhbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeD0gLTIuNSwgeSA9IC02LCBsYWJlbD0iciA9IDAuNTMgWzAuNDEuLCAwLjYzXSIsIHNpemUgPSAzKSsKICB0aGVtZV9idygpICAgKwogIHRoZW1lKGxlZ2VuZC5rZXkuc2l6ZSA9IHVuaXQoMC41LCAnY20nKSwgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemU9MTApKSArCiAgZ3VpZGVzKHNpemUgPSAibm9uZSIpICMrCiAgI3RoZW1lKGxlZ2VuZC5wb3NpdGlvbj0gYygwLjAzLCAwLjk3KSwgbGVnZW5kLmp1c3RpZmljYXRpb24gPSBjKDAsIDAuOTcpKQogIAoKZjUgPC0gZ2dwbG90KGRhdGEgPSBkYXQpICsKICBnZW9tX3BvaW50KGFlcyh5ID0gbG9nKFpyKSwgeCA9IGxvZyhhYnNfc2xvcGUpLCBjb2wgPSBDYXRlZ29yeSwgc2l6ZSA9IHRvdGFsX24pKSArIAogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNicGwpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGNicGwpICsKICBsYWJzKHkgPSAiWnIgKHRyYW5zZm9ybWVkIHZhcmlhbmNlIGFjY291bnRlZCBmb3IpIiAsIHggPSAibG4oQWJzb2x1dGUgZGlmZmVyZW5jZSBpbiBzdGFuZGFyZGl6ZWQgc2xvcGVzKSIpICsKICBsYWJzKGNvbG9yPSdUcmFpdCB0eXBlcycsIHNpemUgPSAiU2FtcGxlIHNpemUgKE4pIikgKwogIGFubm90YXRlKGdlb209InRleHQiLCB4PSAgLTIsIHkgPSAtNiwgbGFiZWw9InIgPSAwLjM3IFswLjIzLCAwLjQxXSIsIHNpemUgPSAzKSsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQua2V5LnNpemUgPSB1bml0KDAuNSwgJ2NtJyksIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplPTEwKSkrCiAgZ3VpZGVzKGNvbCA9ICJub25lIiwgc2l6ZSA9ICJub25lIikgKwogIHNjYWxlX3NpemVfY29udGludW91cyhicmVha3MgPSBjKDIwMCwgMjAwMCwgMjAwMDApLCBndWlkZSA9IGd1aWRlX2xlZ2VuZCgpKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gYygwLjAzLCAwLjk3KSwgbGVnZW5kLmp1c3RpZmljYXRpb24gPSBjKDAsIDAuOTcpKQoKCmY2IDwtIGdncGxvdChkYXRhID0gZGF0KSArCiAgZ2VvbV9wb2ludChhZXMoeSA9IGxvZyhaciksIHggPSBsb2coYWJzX2xuVlIpLCBjb2wgPSBDYXRlZ29yeSwgc2l6ZSA9IHRvdGFsX24pKSArIAogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNicGwpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGNicGwpICsKICBsYWJzKHkgPSAiWnIgKHRyYW5zZm9ybWVkIHZhcmlhbmNlIGFjY291bnRlZCBmb3IpIiwgeCA9ICJsbihBYnNvbHV0ZSByZWxhdGl2ZSBkaWZmZXJlbmNlIGluIFNEKSIgKSsKICBsYWJzKGNvbG9yPSdUcmFpdCB0eXBlcycsIHNpemUgPSAiU2FtcGxlIHNpemUgKE4pIikgKwogIGFubm90YXRlKGdlb209InRleHQiLCB4PSAtMC4yNSwgeSA9IC0gNSwgbGFiZWw9InIgPSAwLjE4IFswLjAyLCAwLjMzXSIsIHNpemUgPSAzKSsKICB0aGVtZV9idygpICArCiAgdGhlbWUobGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjUsICdjbScpLCBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZT0xMCkpKwogIGd1aWRlcyhjb2wgPSAibm9uZSIpICMrCiAgI3NjYWxlX3NpemVfY29udGludW91cyhicmVha3MgPSBjKDIwMCwgMjAwMCwgMjAwMDApLCBndWlkZSA9IGd1aWRlX2xlZ2VuZCgpKSAKCgooZjQvZjUvZjYpICsgcGxvdF9hbm5vdGF0aW9uKHRhZ19sZXZlbHMgPSAnQScpCmBgYAoKKipGaWcuIFMyKiogQml2YXJpYXRlIG9yZGluYXRpb25zIG9mIGxvZyBhYnNvbHV0ZSBkaWZmZXJlbmNlIGJldHdlZW4gbWFsZXMgYW5kIGZlbWFsZXMgKHNlZSB0aGUgbWFpbiB0ZXh0KQoKIyBTb2Z0d2FyZSBhbmQgcGFja2FnZSB2ZXJzaW9ucwoKYGBge3J9CnNlc3Npb25JbmZvKCkgJT4lIHBhbmRlcigpCmBgYAo=